gpt4 book ai didi

python - 默认和非默认参数的顺序

转载 作者:太空狗 更新时间:2023-10-29 17:17:46 24 4
gpt4 key购买 nike

在 Python 中,我知道默认参数在末尾,非默认参数不能跟在默认参数之后。那也行。例如:

>>> def foo(x=0, y):
return x, y
SyntaxError: non-default argument follows default argument

这符合预期。

但是,如果我希望第一个参数应该是默认参数,情况会怎样呢?例如,从上面的代码可以看出,x 必须是第一个参数,并且它的默认值应该是 0。

这有可能吗?我问是因为即使在 range 函数中,我猜它也是这样的:

def range(start=0, end):
pass

那么这是如何完成的,如果不可能,range 是如何实现的?请注意,我坚持第一个参数是默认的,这就是重点。我以 range 为例,因为它非常适合我的问题。当然,可以将 range 实现为 def range(end, start=0),但这不是重点。

最佳答案

嗯,range 是 C 代码,可以稍微好一点。无论如何,你可以这样做:

def range(start, stop=None):
if stop is None: # only one arg, treat stop as start ...
stop = start
start = 0
...

并相应地记录函数。

关于python - 默认和非默认参数的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4137770/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com