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

时间:2014-02-15 22:37:17

标签: python function arguments

例如,我想:

def func(n=5.0,delta=n/10):

如果用户指定了增量,请使用它。如果不是,请使用取决于n的值。这可能吗?

4 个答案:

答案 0 :(得分:15)

该语言不支持此类语法。

这些情况(*)的常用解决方法是使用默认值,该默认值不是有效输入。

def func(n=5.0, delta=None):
     if delta is None:
         delta = n/10

(*)当默认值是可变的时,会出现类似的问题。

答案 1 :(得分:4)

你不能在函数定义行中自己做,你需要在函数体中做到这一点:

def func(n=5.0,delta=None):
    if delta is None:
        delta = n/10

答案 2 :(得分:2)

你可以这样做:

def func(n=5.0, delta=None):
    if delta is None:
        delta = n / 10
    ...

答案 3 :(得分:0)

这些答案在某些情况下会起作用,但是如果您的从属参数(delta)是列表或任何可迭代的数据类型,则该行

    if delta is None:

会抛出错误

ValueError:具有多个元素的数组的真值不明确。使用a.any()或a.all()

如果您的从属参数是dataframelistSeries等,则下面的代码行会更好地工作。请参阅this帖子以获取想法/更多详细信息。

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