变量为何可作函数使用?解析Python Lambda示例困惑
为什么
mydoubler变量能被当作函数调用? 这核心原因是Python里函数是一等公民——函数可以被当作值来传递、赋值给变量,甚至作为另一个函数的返回值。咱们拆解来看:
先看
myfunc的定义:
它接收参数n,然后返回一个lambda表达式(也就是匿名函数)。这个lambda函数的逻辑是接收参数a,返回a * n。语句3
mydoubler = myfunc(2):
当你调用myfunc(2)时,n被设为2,此时myfunc返回的是已经绑定了n=2的lambda函数(相当于lambda a: a * 2)。所以mydoubler这个变量,其实是指向了这个lambda函数的引用——它本质上就是个函数,只是名字是mydoubler而已。语句4
print(mydoubler(11)):
既然mydoubler是函数,那自然可以像调用普通函数一样传参。这里把11传给lambda的参数a,计算11 * 2得到22,最终输出结果就是22。
举个更直观的普通函数例子,和这个逻辑完全一致:
def make_multiplier(n): def multiplier(a): return a * n return multiplier mydoubler = make_multiplier(2) print(mydoubler(11)) # 同样输出22
这里make_multiplier返回的是一个命名函数multiplier,和返回lambda的区别只是函数有没有名字,本质都是把函数赋值给了mydoubler变量,所以能直接调用。
内容的提问来源于stack exchange,提问作者SOuser
相关产品推荐
相关产品推荐

