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