假设我有一个带有两个参数的 python 函数,但我希望第二个参数是可选的,默认值是作为第一个参数传递的任何参数。所以,我想做这样的事情:
def myfunc(arg1, arg2=arg1):
print (arg1, arg2)
但那是行不通的。我能想到的唯一解决方法是:
def myfunc(arg1, arg2=None):
if arg2 is None:
arg2 = arg1
print (arg1, arg2)
有一个更好的方法吗?
正如@Ignacio 所说,你不能这样做。在你的后一个例子中,你可能会遇到这样的情况:None
是一个有效值arg2
。如果是这种情况,您可以使用哨兵值:
sentinel = object()
def myfunc(arg1, arg2=sentinel):
if arg2 is sentinel:
arg2 = arg1
print (arg1, arg2)
myfunc("foo") # Prints 'foo foo'
myfunc("foo", None) # Prints 'foo None'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)