例如,我想:
def func(n=5.0,delta=n/10):
如果用户指定了增量,请使用它。如果不是,请使用取决于n的值。这可能吗?
答案 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()
如果您的从属参数是dataframe
,list
,Series
等,则下面的代码行会更好地工作。请参阅this帖子以获取想法/更多详细信息。
def f(n, delta = None):
if delta is f.__defaults__[0]:
delta = n/10