【问题标题】:Lambda expressions in PythonPython 中的 Lambda 表达式
【发布时间】:2016-07-30 23:55:15
【问题描述】:

lambda 表达式在 Python 中可以有多行吗?和常用函数一样。

我可以这样做吗?

res = lambda x y:
    z = x**2 + 5
    z + x + y

(我知道这个函数可以写成一行,就是个例子)

【问题讨论】:

  • 不,他们不能;只需使用普通的def
  • lambda函数的主要目的是可以内联定义。如果你想使用多行函数,你可以简单地使用带有def的常规函数​​。
  • 这里的关键词是lambda 表达式;它不能包含任何语句,更不用说包含多个语句了。

标签: python


【解决方案1】:

恕我直言,你不能。

如果您在 lambda 函数中需要一些临时变量,作为一种丑陋的解决方法,您可以这样做:

res = lambda x,y : [ z**2 + z**4 + z  for z in [x**2+5]][0]

【讨论】:

    【解决方案2】:

    有关 lambda 表达式可以走多远的有趣示例,请查看this

    尽管您绝对应该为此使用函数。

    【讨论】:

    • 这个输出到标准输出并返回[None]
    【解决方案3】:

    它们可以被分割成多个,这与任何表达式都可以被分割成多行的规则相同。您可以使用反斜杠 \ 来防止换行符结束当前语句,或者使用在各种形式的括号内允许换行符这一事实:()[]{}

    但是,lambda 表达式就是这样,一个表达式。它不能包含赋值语句(或任何其他语句)。

    具体细节由the Python grammar定义。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-19
      • 1970-01-01
      • 1970-01-01
      • 2011-09-11
      • 1970-01-01
      • 2013-07-02
      • 1970-01-01
      • 2016-04-10
      相关资源
      最近更新 更多