Python中函数调用有这么一种用法:
def a(x):
def b(y):
return x + y
return b
print(a(2)(3))
#打印如下:
5
就是这里的a(2)(3)这么个用法
那么不妨先输出a(2)来看看是什么
def a(x):
def b(y):
return x + y
return b
print(a(2))
#打印结果如下:
<function a.<locals>.b at 0x10cc71a60>
输出说a(2)是一个函数。因为传参数2过去,函数a啥也没干,直接返回了b这个函数变量。如果再加一个括号a(2)(3),就相当于是执行了:
func = a(2)
print(func(3))
至于这里为什么函数b可以直接作为变量返回来,请看我的另一篇文章《Python函数后边加不加括号的区别》