Python中如何设置别名实现无需括号仅输入单个词即可执行函数
无括号运行Python函数的实现方法
有两种常见的实现场景:
- 交互式环境(IPython/Jupyter):直接开启
%autocall魔法命令即可。执行%autocall 1后,无参数的函数直接输入函数名就会自动执行,无需加括号;执行%autocall 0可关闭该功能。 - 常规脚本场景:通常借助类的属性装饰器实现,用
@property把无参方法包装为实例属性,访问属性时会自动触发方法执行,不需要加括号,示例如下:
class Test: @property def run(self): print("方法已执行") return 100 obj = Test() res = obj.run # 无需加括号,访问时自动执行run方法,res拿到返回值100
注意:无括号执行逻辑会大幅降低代码可读性,其他开发者无法直观区分你是在访问静态属性还是执行有副作用的函数,非特殊场景不推荐使用。
函数执行操作的赋值方法
完全可以把函数的执行操作本身赋值给变量,不需要立即执行拿返回值:
- 如果你不需要预传参数,直接赋值不带括号的函数名即可,此时赋值的是函数对象本身,后续给变量加括号就会触发执行:
def func(): return "当前执行结果" x = func # 不带括号,不会立即执行,仅把函数对象赋值给x print(x()) # 加括号后执行,输出 当前执行结果
- 如果需要提前绑定参数,后续调用不用再传参,可以用
functools.partial实现:
from functools import partial def calculate(a, b): return a * b + 5 x = partial(calculate, 3, 4) # 提前绑定参数3和4 print(x()) # 执行时无需传参,输出 17
内容的提问来源于stack exchange,提问作者Quora Feans
相关产品推荐
相关产品推荐

