首页 > 解决方案 > 关键字如何继承默认参数

问题描述

我们知道偏函数是特定参数值的原始函数。部分函数的基本语法是,

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

我的问题是为什么当我不想通过时 args 和关键字会互换,b因为虽然在第一种情况下我没有通过a但结果是正确的。

标签: pythonfunctools

解决方案


4作为位置partial参数提供,并且在调用实例时严格从左到右应用这些参数。也就是说,partial(f, 4)大致相当于lambda x: pow(4, x)。如果不使用关键字参数,就无法定义函数lambda x: pow(x, 4)的等效项。partial


推荐阅读