use*_*312 15 python argument-passing
在Python中,我理解默认参数出现在最后,非默认参数不能遵循默认参数.那样就好.例如:
>>> def foo(x=0, y):
return x, y
SyntaxError: non-default argument follows default argument
Run Code Online (Sandbox Code Playgroud)
这没关系.
但是,当我想要第一个参数应该是默认参数的情况呢?例如,从上面的代码可以看出,x必须是第一个参数,它应该具有默认值0.
是否有可能做到这一点?我问,因为即使在range函数中,我猜它是这样的:
def range(start=0, end):
pass
Run Code Online (Sandbox Code Playgroud)
那么这是如何完成的,如果不可能,这是如何实现的range呢?请注意,我坚持认为第一个参数是默认值,即整个点.我用它range作为一个例子,因为它完全符合我的问题.当然,一个可以实现range的def range(end, start=0),但是这不是重点.
Joc*_*zel 10
嗯,rangeC代码可以做得更好.无论如何,你可以这样做:
def range(start, stop=None):
if stop is None: # only one arg, treat stop as start ...
stop = start
start = 0
...
Run Code Online (Sandbox Code Playgroud)
并相应地记录功能.