我们知道偏函数是用于特定参数值的原始函数。偏函数的基本语法是,
partial(func[, *args][, **keywords])
现在,让我们假设一个特定的程序。
from functools import partial
def power(a, b):
return a ** b
pw = partial(power, b=4)
print('Default keywords for pw :', pw.keywords)
print('Default arguments for pw :', pw.args)
print('Answer of pw is: ',pw(3))
# Output
# -------
# Default keywords for pw: {'b': 4}
# Default arguments for pw: ()
# Answer of pw is: 81
输出正确,上面的部分函数我将关键字设置为b=4
,默认agrs
为()
。现在,如果我省略关键字 b
而那个地方我只放了 4。场景更改为答案是 64。
partial(power, 4)
# Output
# -------
# Default keywords for pw: {}
# Default arguments for pw: (4,)
# Answer of pw is: 64
我的问题是当我不想通过 b
时为什么 args 和关键字会互换,因为虽然在第一种情况下我没有通过 a
但结果是正确的。
答案 0 :(得分:1)
您提供 4
作为 位置 参数,并且在调用 partial
实例时严格从左到右应用这些参数。也就是说,partial(f, 4)
大致相当于 lambda x: pow(4, x)
。如果不使用关键字参数,就无法使用 lambda x: pow(x, 4)
定义函数 partial
的等效项。