是否可以更改 Python 中函数的默认参数?

2023-12-06

在Python中,是否可以在运行时重新定义函数的默认参数?

我在这里定义了一个有3个参数的函数:

def multiplyNumbers(x,y,z):
    return x*y*z

print(multiplyNumbers(x=2,y=3,z=3))

接下来,我尝试(未成功)为 y 设置默认参数值,然后尝试在不带参数的情况下调用该函数y:

multiplyNumbers.y = 2;
print(multiplyNumbers(x=3, z=3))

但由于默认值,产生了以下错误y没有正确设置:

TypeError: multiplyNumbers() missing 1 required positional argument: 'y'

是否可以像我在这里尝试那样在运行时重新定义函数的默认参数?


只需使用functools.partial

 multiplyNumbers = functools.partial(multiplyNumbers, y = 42)

这里有一个问题:你将无法将其称为multiplyNumbers(5, 7, 9);你应该手动说y=7

如果您需要删除默认参数,我看到两种方法:

  1. 将原始函数存储在某处

    oldF = f
    f = functools.partial(f, y = 42)
    //work with changed f
    f = oldF //restore
    
  2. use partial.func

    f = f.func //go to previous version.
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以更改 Python 中函数的默认参数? 的相关文章

随机推荐

  • 在 C# 中查找字符串中的所有模式索引

    如何使用 C 查找字符串中模式的所有索引 例如我想找到所有 像这样的字符串中的模式索引45 78 56 JK01UU string pattern string sentence 45 78 56 J K01UU IList
  • 在Java中如何将数组字符向右移动?

    这就是我所拥有的 class encoded public static void main String args String s1 hello char ch s1 toCharArray for int i 0 i
  • 从控制台调用 Javascript 函数

    在 Chrome 的 JavaScript 控制台中 如何调用属于我正在查看的网页中包含的 js 文件的函数 如果它在封闭物内 我很确定你不能 否则你就这样做functionName 并按回车键
  • 不同类型的迭代器

    还有其他类型的迭代器吗 有显示不同类型迭代器的链接吗 我唯一知道的是 NET 的 IEnumerable 特别是对于 C 但也欢迎所有其他的 迭代器在不同的语言中有很多不同的东西 不仅仅是 C 迭代器 的一个明显例子是 C 迭代器 它基本上
  • Python修改函数内的列表

    我试图让函数通过传递列表的引用来修改列表 下面的程序显示 当我将列表传递到函数中时 仅生成一个局部变量 有没有什么方法可以在函数中从该列表中选择一些成员 谢谢 def func list1 list1 list1 2 print list1
  • 使用 python 解析非常大的 xml 文件时出现问题

    我有一个很大的 xml 文件 大约 84MB 其形式如下
  • 如何在 ul 下拉菜单中显示选定的菜单项

    我有一个下拉菜单 显示字体颜色供用户选择 目前 下拉列表显示 样式 但是我希望菜单标题显示当前选择的值 这是代码 HTML div class dropdown div
  • Objective-C 中的 HTTP Post 请求不起作用

    我正在编写一个 HTTP Post 请求 但由于某种原因 参数没有正确添加 而且我一生都无法弄清楚我做错了什么 这是我所拥有的 NSMutableURLRequest request NSMutableURLRequest alloc in
  • VBA - 从关闭的 Excel 工作簿中检索数据

    我正在尝试创建一个 VBA 脚本来从四个不同的工作簿收集数据 目前 我只是使用一本工作簿测试代码 但当我尝试获取数据时收到错误 虽然我想在不打开四个工作簿的情况下检索数据 但我需要打开它们才能找到最后一行数据 这是我当前的代码 Public
  • SilverStripe 4.1 - SS_DEFAULT_ADMIN_USERNAME 和 PASSWORD 不受尊重

    我有一个在 Ubuntu Vagrant VM 上运行的 SilverStripe 4 1 站点 从 3 4 升级 我有以下内容 env file Default Admin SS DEFAULT ADMIN USERNAME admin
  • 如何从 STDIN 将行导入到 Postgresql? [复制]

    这个问题在这里已经有答案了 在 Python 中 我有以下命令可以将行批量加载到 Postgresql 而不使用文件 import csv import subprocess mylist keys name fred name mary
  • video-js 自定义字体在 Firefox 中不起作用

    使用 Firefox 查看这里 我有 22 0 http www jamhouse com au 您会看到 video js 自定义字体不起作用 在 Chrome 中运行良好 任何想法将不胜感激 Watto Firefox 有极其严格的跨域
  • 如何在Java中获取.(点)之前和/(最后一个)斜杠之后的字符串

    我有一个像这样的字符串 core pages viewemployee jsff 从这段代码中 我需要获取 viewemployee 我如何使用 Java 获得这个 假设您将该字符串保存在名为的变量中myString String mySt
  • 如何在C++中添加2个任意大小的整数?

    我想在 C 中添加 2 个任意大小的整数 我该怎么做呢 Here s an example showing how to use the OpenSSL bignum implementation for arbitrary precisi
  • 无法将类型“十进制”隐式转换为“字符串”

    我正在创建的购物车中有此代码 但我收到标题中显示的错误 错误显示在这一行上 只需致电ToString获取十进制值的字符串表示形式 order Total orderTotal ToString G 虽然我不明白你为什么要存储会员Total
  • 单个引用变量如何访问所有对象字段?

    Animal myAnimal new Animal 我上面有这段代码 据我所知 它会做这些事情 将在堆内存上创建一个动物对象 对该对象的引用将传递给引用变量 myAnimal 换句话说 myAnimal 变量保存 Animal 对象在堆上
  • 如何在OpenCV2 python中查看视频流

    我开始玩Opencv 我在 Linux 上使用 opencv2 的 python 绑定 我编写了一个快速测试程序 但它似乎无限期地挂起 import cv2 weblink http continuous video stream here
  • Django框架中的一次性操作操作应该放在哪里?

    我想执行一些一次性操作 例如在 Django 服务器启动时启动后台线程并每 30 分钟填充一次缓存作为初始化操作 这样它就不会阻止用户访问网站 我应该将所有这些代码放在 Django 中的哪里 将它们放入setting py文件中不起作用
  • 使用(Anaconda 与 PyCharm

    我的 Linux Ubuntu 14 04 机器上运行着 Pycharm 4 除了系统 python 之外 我还安装了 Anaconda 让两者很好地协同工作似乎有点问题 PyCharm 提供了一些有趣的集成virtualenvs and
  • 是否可以更改 Python 中函数的默认参数?

    在Python中 是否可以在运行时重新定义函数的默认参数 我在这里定义了一个有3个参数的函数 def multiplyNumbers x y z return x y z print multiplyNumbers x 2 y 3 z 3