繁体   English   中英

如何使参数的默认值依赖于另一个参数(在 Python 中)?

[英]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()

如果您的依赖参数是dataframelistSeries等,以下代码行会更好。 有关想法/更多详细信息,请参阅帖子。

    def f(n, delta = None):
        if delta is f.__defaults__[0]:
            delta = n/10

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM