【发布时间】:2013-03-30 07:17:47
【问题描述】:
python3 中的 range 函数接受三个参数。其中两个是可选的。所以参数列表看起来像:
[开始],停止,[步骤]
这意味着(如果我错了,请纠正我)在非可选参数之前有一个可选参数。但是,如果我尝试定义这样的函数,我会得到:
>>> 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 相同的规则(很高兴知道为什么)。人们可能会因为我的建议而讨厌我,但我这样做是为了范围,因为我对事物的顺序有一个糟糕的记忆。 Imo 这应该不是问题,所以我正在修复它:range(*{'start':0,'stop':10,'step':2}.values())
标签: python python-3.x arguments range