为什么在lambda中无法打印?


问题内容

为什么不起作用?

lambda: print "x"

这不是一个单一的声明,还是其他?该文档对于lambda允许的内容似乎有点稀疏…


问题答案:

一个lambda人的身体必须是一个 单一的表情 。在Python 2.x中,print是一条语句。但是,在Python
3中,它print是一个 函数 (函数应用程序是一个表达式,因此它将在lambda中工作)。如果使用的是最新的Python
2.x,则可以(并且应该,为了向前兼容:)使用向后移植的打印功能:

In [1324]: from __future__ import print_function

In [1325]: f = lambda x: print(x)

In [1326]: f("HI")
HI