在Python3中,range函数需要三个参数,其中两个是可选的。因此,参数列表看起来像:
[start],stop,[step]
这意味着(如果我理解错误,请纠正),一个非必需参数出现在一个必需参数之前。但是,如果我尝试定义这样的函数,我会得到如下结果:
>>> def foo(a = 1, b, c = 2):
print(a, b, c)
SyntaxError: non-default argument follows default argument
作为一个“普通”的Python用户,我是否无法做到这一点,还是可以定义这样的一个函数?当然,我可以这样做:
def foo(a, b = None, c = 2):
if not b:
b = a
a = 1
例如,帮助函数将显示奇怪的信息。因此,我真的想知道是否可以定义一个像内置的range
函数那样的函数。
range
是一个C函数,由于某种原因它没有遵循Python相同的规则(希望能知道为什么)。 人们可能会因为我建议这样做而讨厌我,但自从我对事物的顺序有可怕的记忆以来,我一直在使用range
。在我看来,这不应该成为问题,所以我正在解决它:range(*{'start':0,'stop':10,'step':2}.values())
- Charlie Parker