如何在Python中将传递的参数用作默认参数值?

问题描述 投票:0回答:1

给出一个具有多个参数的函数,除第一个参数外,所有参数都是变量。

例如:def f(a, b = .., ...)

我正在寻找实现以下直观代码的极简python代码:

def f(a, b = a, ...)

因此,我在这里找不到任何令人满意的答案,尽管我毫不怀疑该问题的答案已经在某个地方了-在这种情况下,我深表歉意。干杯!

通过另一个示例,我通过错误的代码再次直观地指定了所需的功能:

def f(a,b,c, d = 0, e = [], f = b, g = c, h = a):
...

谢谢您!

python input arguments variadic-functions
1个回答
0
投票

根据Python docs

表达式(用作默认参数值)在定义函数时被评估一次,并且每个调用使用相同的“预先计算”值。

因此,您试图实现的目标不能这么简单,因为默认参数值仅在函数定义中计算一次,而不是在每次调用时计算。

相反,您可以将所有默认参数值设置为None并在函数的主体中测试该值:

def func(a, b, c, d = 0, e = [], f = None, g = None, h = None):
    f = b if f == None else f
    g = c if g == None else g
    h = a if h == None else h
© www.soinside.com 2019 - 2024. All rights reserved.