我想创建一个函数列表来设置先前定义的函数的默认值,以便稍后我可以只用一个参数调用它们。问题是第一个参数是必需的,所以我得到了一个错误。最符合 Python 风格的方法是什么?
def plus(num, a1):
return num + a1
def div(num, a1):
return num / a1;
acts = [plus(a1 = 3), div(a1 = 3), div(a1 = 2)]
num = 9
for act in acts:
num = act(num)
我希望的行为是 num 为 9 -> 12 -> 4 -> 2
请您参考如下方法:
使用 funtools.partial,您需要翻转参数,因为 partial 按顺序应用它们:
from functools import partial
def plus(a1, num):
return num + a1
f = partial(plus, 3)
例如:
>>> f = partial(plus, 3)
>>> f(10)
13
或者使用默认值:
def div(num, a1=1):
return num / a1
fdiv = partial(div, a1=3)
例如:
>>> acts = [partial(plus, 3), partial(div,a1 = 3), partial(div, a1 = 2)]
>>> num = 9
>>> for act in acts:
... num = act(num)
...
>>> num
2.0
