Python中x = function(arguments)(variable)的语法名称及运行原理
语法说明
你见到的这类写法没有专属的独立语法命名,它本质是可调用对象返回后的连续调用,属于Python高阶函数特性的典型用法,常和柯里化、偏函数的实现场景绑定。
运行原理
你给出的代码x = function(arguments)(variable)执行逻辑可以拆分为两步,和下面的写法完全等价:
# 第一步:调用function并传入arguments,得到返回值temp temp = function(arguments) # 第二步:temp本身是可调用对象(支持像函数一样执行),继续传入variable调用,结果赋值给x x = temp(variable)
只要第一个函数调用的返回值是可调用对象,就可以使用这种连续括号的写法,常见的可调用对象返回场景有三类:
- 函数返回另一个嵌套函数
示例如下:
# 定义一个生成加法器的工厂函数 def add_num(n): def inner(x): return x + n return inner # 连续调用写法,最终结果为8 x = add_num(3)(5)
- 返回实现了
__call__魔术方法的类实例
Python中只要类定义了__call__方法,它的实例就可以像函数一样被调用:
class Calculator: def __init__(self, base): self.base = base def __call__(self, num): return self.base * num # 连续调用写法,最终结果为20 x = Calculator(4)(5)
- 标准库生成的偏函数对象
Pythonfunctools模块提供的偏函数工具也支持这种写法:
from functools import partial def calc(a, b): return a ** b # 先固定第一个参数为2,得到偏函数后再传入第二个参数3,最终结果为8 x = partial(calc, 2)(3)
内容的提问来源于stack exchange,提问作者Hseran
相关产品推荐
相关产品推荐

