请考虑简单的功能:
def fun(x, y, param1=10, param2=param1/3):
do something
Where param1
and param2
不应是必需的,但可以由用户设置。如果param2
未设置,值取决于param1
某种程度上来说。
上面的例子会引发NameError: name 'param1' is not defined
有没有办法在Python中完成这种分配?
一种方法是在函数内模拟它:
def fun(x, y, param1=10, param2=None):
if param2 is None:
param2 = param1/3
# do something
If param2=None
是一个有效的输入fun()
,以下可能是更好的选择:
default = object()
def fun(x, y, param1=10, param2=default):
if param2 is default:
param2 = param1 / 3
# do something
(看了第二个例子几分钟,我实际上很喜欢is default
句法。)
原始版本不起作用的原因是默认值是在函数定义时计算和绑定的。这意味着您不能有一个默认值,该默认值依赖于调用函数之前未知的东西(在您的情况下,param1
).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)