关键字如何继承默认参数

问题描述

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

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=4agrs()。现在,如果我省略关键字 b 而那个地方我只放了 4。场景更改为答案是 64。

partial(power,4)

# Output
# -------
# Default keywords for pw: {}
# Default arguments for pw: (4,)
# Answer of pw is:  64

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

解决方法

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...