Python 为什么可以';t print()是否可以在lambda表达式中使用?

Python 为什么可以';t print()是否可以在lambda表达式中使用?,python,lambda,functional-programming,Python,Lambda,Functional Programming,原因是: 无效语法,但: p = lambda s: print(s) 有效?这是语言的阅读方式,它不能一步完成p=lambda s:print?;在Python2.7(及之前版本)中,print是一个语句,而在Python3中,它是一个函数lambda的主体必须是一个表达式,而不是一个语句打印是一种语句 更新:正如所指出的,在2.x中,print是一个语句,而在Python3中,它是一个函数。@sukhibr根据print()是一个函数。在2.7中,可以从导入打印函数来统一这一点,在Pyth

原因是:

无效语法,但:

p = lambda s: print(s)

有效?

这是语言的阅读方式,它不能一步完成
p=lambda s:print?;在Python2.7(及之前版本)中,print是一个语句,而在Python3中,它是一个函数

lambda的主体必须是一个表达式,而不是一个语句<代码>打印
是一种语句


更新:正如所指出的,在2.x中,
print
是一个语句,而在Python3中,它是一个函数。

@sukhibr根据
print()
是一个函数。在2.7中,可以从导入打印函数来统一这一点,在Python2.6.6中,
print
是一个语句,因此不能出现在lambda表达式中,建议使用示例中的包装函数
def do_print(s):
    print(s)
p = lambda s: do_print(s)