为什么在 lambda 中不生效 print?
为什么这个不管用呢?
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