关键字如何继承默认参数

时间:2021-01-14 12:33:58

标签: python functools

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

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 但结果是正确的。

1 个答案:

答案 0 :(得分:1)

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