【问题标题】:Why can't print() be used in a lambda expression?为什么不能在 lambda 表达式中使用 print()?
【发布时间】:2023-04-03 04:24:01
【问题描述】:

为什么:

p = lambda s: print(s)

语法无效,但是:

def do_print(s):
    print(s)
p = lambda s: do_print(s)

有效吗?

【问题讨论】:

    标签: python lambda functional-programming


    【解决方案1】:

    lambda 的主体必须是表达式,而不是语句。 print 是一个声明。

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

    【讨论】:

    • @sukhibr 根据docs print() 是一个函数。
    【解决方案2】:

    您使用的是哪个版本的python?在 python 2.7(及之前)中,print 是一个 statement 而在 python 3 中它是一个 function

    【讨论】:

    • 在 2.7 中你可以做from __future__ import print_function 来统一这个
    • 在 python 2.6.6 中,print 是一个语句,因此不能出现在 lambda 表达式中,建议使用包装函数,例如您的示例中的解决方法
    【解决方案3】:

    它的语言被阅读的方式它不能一步完成p = lambda s: print(s)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-09
      • 2011-02-27
      • 1970-01-01
      • 2023-03-03
      • 1970-01-01
      • 1970-01-01
      • 2012-01-21
      • 2019-11-14
      相关资源
      最近更新 更多