gpt4 book ai didi

python - 关键字参数中的引用参数

转载 作者:行者123 更新时间:2023-11-30 22:23:35 24 4
gpt4 key购买 nike

有没有办法使用参数的值来动态设置关键字参数的默认值?我在想这样的事情:

def foo(lst, r = 0, l = len(lst)):    #I am referring to the "l = len(lst)" part
print r, l


foo([1,2,3])

这给出了以下回溯:

Traceback (most recent call last):
File "C:/Python27/quicksort.py", line 25, in <module>
def foo(lst, r = 0, l = len(lst)):
NameError: name 'lst' is not defined

人们可以做类似的事情:

def foo(lst, r = 0, l = None):
if l is None:
l = len(lst)
print r, l

但我希望有一个更优雅的解决方案。有人可以帮忙吗?

最佳答案

Is there any way to use the value of an argument to dynamically set the default of a keyword argument?

不幸的是没有。这可以用一个更简单的例子来展示:

>>> def func(a, b=a):
return a, b

Traceback (most recent call last):
File "<pyshell#6>", line 1, in <module>
def func(a, b=a):
NameError: name 'a' is not defined

正如评论中所说,Python 关键字参数值在函数定义时计算,但任何参数的值直到函数被调用时才知道。因此,在 Python 中类似的事情根本不可行。

但是,您可以使用三元运算符使代码更加紧凑:

def foo(lst, r=0, l=None):
l = l if l is not None else len(lst)
print(r, l)

关于python - 关键字参数中的引用参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48026545/

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