如何在 Python 中使用传递的参数作为默认参数值?
How to use passed arguments as default parameter values in Python?
给定一个具有多个参数的函数,其中除第一个参数外的所有参数都是变量。
例如:
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 docs:
the expression [used as default parameter value] is evaluated once, when the function is defined, and that the same “pre-computed” value is used for each call.
所以你试图实现的目标不会如此简单,因为默认参数值只在函数定义时计算一次,而不是在每次调用时计算。
相反,您可以将所有默认参数值设置为 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
给定一个具有多个参数的函数,其中除第一个参数外的所有参数都是变量。
例如:
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 docs:
the expression [used as default parameter value] is evaluated once, when the function is defined, and that the same “pre-computed” value is used for each call.
所以你试图实现的目标不会如此简单,因为默认参数值只在函数定义时计算一次,而不是在每次调用时计算。
相反,您可以将所有默认参数值设置为 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