为什么在 lambda 中不生效 print?

177 投票
10 回答
111640 浏览
提问于 2025-04-15 23:32

为什么这个不管用呢?

lambda: print "x"

这难道不是一句完整的话吗,还是说它是别的什么?文档里好像对lambda可以做什么讲得不太清楚……

10 个回答

25

你写的这个其实和下面的内容是一样的:

def anon():
    return print "x"

这同样会导致一个语法错误,因为在Python 2.xx版本中,你不能给print赋值;而在Python 3中,你可以这样写:

lambda: print('hi')

这样就可以正常工作了,因为在Python 3中,print被改成了一个函数,而不是一个语句。

28

在我用这个做简单的占位符时,我会这样写:

fn = lambda x: sys.stdout.write(str(x) + "\n")

这样写效果很好。

202

一个 lambda 的内容必须是一个 单一的表达式。在 Python 2.x 中,print 是一个语句。但是在 Python 3 中,print 变成了一个 函数(而函数的调用是一个表达式,所以在 lambda 中可以使用)。如果你在使用最新的 Python 2.x,建议使用已经移植过来的 print 函数,以确保向后兼容 :)

In [1324]: from __future__ import print_function

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

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

撰写回答