【发布时间】:2015-05-08 04:19:08
【问题描述】:
这是如何工作的:
def writer():
title = "Mr"
name = (lambda x: title + ' ' + x)
return name
writer("Bond")
Traceback (most recent call last):
File "<input>", line 1, in <module>
TypeError: writer() takes 0 positional arguments but 1 was given
who = writer()
who("Bond")
'Mr Bond'
所以 lambda 采用位置参数 x 对吗?通过将函数对象 writer() 分配给“谁”,我以某种方式可以访问 lambda?
【问题讨论】:
-
函数也是对象;你的
writer()函数返回一个。 -
它基本上和在函数工厂中嵌套一个内部函数是一样的
-
尝试在交互式解释器中键入其中一个以了解正在发生的事情:
writer()(不要将其分配给任何东西,从而强制将其返回的内容打印到控制台),或who. -
阅读闭包和函数作为对象。另外,更重要的是, lambda 只是定义了一个函数。归还后就可以使用了。
标签: python lambda variable-assignment function