Rya*_*son 29 python arguments function default-value
假设我有一个带有两个参数的python函数,但我希望第二个arg是可选的,默认是作为第一个参数传递的任何东西.所以,我想做这样的事情:
def myfunc(arg1, arg2=arg1):
print (arg1, arg2)
Run Code Online (Sandbox Code Playgroud)
除此之外不起作用.我能想到的唯一解决方法是:
def myfunc(arg1, arg2=None):
if arg2 is None:
arg2 = arg1
print (arg1, arg2)
Run Code Online (Sandbox Code Playgroud)
有一个更好的方法吗?
mar*_*cog 24
正如@Ignacio所说,你不能这样做.在后一个示例中,您可能会遇到None一个有效值的情况arg2.如果是这种情况,您可以使用sentinel值:
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'
Run Code Online (Sandbox Code Playgroud)