是否可以使用修改后的默认参数为变量赋值?
为了使它更具体,我将举一个例子.以下显然不适用于当前形式,仅用于显示我需要的内容:
def power(a, pow=2): ret = 1 for _ in range(pow): ret *= a return ret cube = power(pow=3)
结果cube(5)
应该是125
.
functools.partial
救援:
返回一个新的部分对象,当被调用时,其行为类似于使用位置参数args和关键字参数关键字调用的func.如果为调用提供了更多参数,则将它们附加到args.如果提供了其他关键字参数,则它们会扩展和覆盖关键字.
from functools import partial cube = partial(power, pow=3)
演示:
>>> from functools import partial >>> >>> def power(a, pow=2): ... ret = 1 ... for _ in range(pow): ... ret *= a ... return ret ... >>> cube = partial(power, pow=3) >>> >>> cube(5) 125
答案使用partial
很好,使用标准库,但我认为值得一提的是以下方法是等效的:
def cube(a): return power(a, pow=3)
即使这看起来不像是因为没有a =
,但它做了很多相同的事情(将名称绑定到函数对象).我认为这通常更清晰.