在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
如果您需要删除默认参数,我会看到两种方法:
将原始功能存储在某个地方
oldF = f
f = functools.partial(f, y = 42)
//work with changed f
f = oldF //restore
采用 partial.func
f = f.func //go to previous version.
问题内容: 假设我有一个带两个参数的python函数,但我希望第二个arg是可选的,默认值是作为第一个参数传递的参数。所以,我想做这样的事情: 除非那行不通。我能想到的唯一解决方法是: 有一个更好的方法吗? 问题答案: 正如@Ignacio所说,您不能这样做。在后面的示例中,您可能会遇到的有效值。在这种情况下,您可以使用前哨值:
问题内容: 是否可以在String方法中使用默认参数。代码如下所示: 上面的代码生成错误。有可能纠正吗? 问题答案: 不,您通常这样做的方法是重载这样的方法:
问题内容: 我只看到了在类定义中设置方法的示例。是否可以在其定义中或定义它们后更改for函数? 我尝试没有成功… 问题答案: 是的,如果您愿意放弃该功能实际上是一个功能。 首先,为我们的新类型定义一个类: 添加装饰器功能: 现在我们可以定义repr和函数了: 现在生产
当我将firstThing(第一件事)设置为default(默认值)时,如果没有默认值nil(默认值),这将起作用,我会得到一个错误,即调用函数时缺少参数。 通过键入Int 我认为它使它成为可选的,默认值为零,对吗?如果是这样,为什么没有=nil它就不能工作?
问题内容: 我尝试使用以下方法更改默认参数值: 而所有的SQL预编译器给我的都是这个错误: 消息102,级别15,状态1,过程my_sp,第8行’(’附近的语法不正确。 我已经创建了过程。(我不确定这是否相关。)我使用的是空默认值,以后再检查它,但这似乎不合适。我可以一行完成吗? 更新:我不打算使用MSDN对存储过程参数的描述: [= default]是参数的默认值。如果定义了默认值,则可以在不为
问题内容: 我在Google上搜索并不断提出“不,这是不可能的”,但是这些帖子的发布日期为2005-2007,所以我想知道是否已更改。一个代码示例: 解决方案之一是传递null,然后检查null并设置变量。我不想这样做,也不必这样做。如果这是真的,那么MySql开发人员需要唤醒,因为我可以用MSSQL做更多的事情。 问题答案: 仍然不可能。