[英]How can I make the default value of an argument depend on another argument (in Python)?
例如,我想要:
def func(n=5.0,delta=n/10):
如果用户已指定增量,则使用它。 如果不是,请使用取决于 n 的值。 这可能吗?
该语言不支持这种语法。
对于这些情况 (*),通常的解决方法是使用一个不是有效输入的默认值。
def func(n=5.0, delta=None):
if delta is None:
delta = n/10
(*) 当默认值是可变的时会出现类似的问题。
你不能在函数定义行本身中做到这一点,你需要在函数体中做到:
def func(n=5.0,delta=None):
if delta is None:
delta = n/10
你可以这样做:
def func(n=5.0, delta=None):
if delta is None:
delta = n / 10
...
这些答案在某些情况下会起作用,但如果您的依赖参数 (delta) 是列表或任何可迭代数据类型,则该行
if delta is None:
会抛出错误
ValueError:包含多个元素的数组的真值不明确。 使用 a.any() 或 a.all()
如果您的依赖参数是dataframe
、 list
、 Series
等,以下代码行会更好。 有关想法/更多详细信息,请参阅此帖子。
def f(n, delta = None):
if delta is f.__defaults__[0]:
delta = n/10
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.