如何用多行编写python lambda?

ome*_*ega 13 python lambda

在python中,如何编写一个采用多行的lambda函数.我试过了

d = lambda x: if x:
                 return 1
              else 
                 return 2
Run Code Online (Sandbox Code Playgroud)

但是我收到了错误......

Gar*_*tty 26

def改用.

def d(x):
    if x:
        return 1
    else:
        return 2
Run Code Online (Sandbox Code Playgroud)

所有python函数都是一阶对象(它们可以作为参数传递),lambda只是制作简短对象的一种方便方法.一般来说,如果它超出一行简单代码,你最好使用普通的函数定义.

即使是这样,其实,如果你将其分配给一个名字,我会一直使用deflambda.lambda在定义短key函数时,这确实是一个好主意sorted(),例如,因为它们可以内联到函数调用中.

请注意,在您的情况下,三元运算符将执行job(lambda x: 1 if x else 2),但我认为这是一个简化的情况.

(作为代码高尔夫笔记,这也可以用更少的代码完成lambda x: bool(x)+1,当然,这是非常难以理解的,也是一个坏主意.)

  • 对于不可读的高尔夫比赛,我更喜欢` - ~bool(x)`,但有相同的字数:) (6认同)
  • `def` 不能与逻辑内联,而必须单独驻留。它破坏了阅读代码的流程。但这就是我们在 python 中处理的事情。 (3认同)
  • @JBernardo这是我的想法,它变得难以理解。先生,向您致敬。 (2认同)

Dav*_*ric 8

lambdaPython中的构造仅限于表达式,不允许任何语句

在保持上述约束的同时,您可以使用反斜杠char编写包含多行的表达式,当然:

>>> fn = lambda x: 1 if x \
                     else 2
>>> fn(True)
>>> 1
>>> fn(False)
>>> 2
Run Code Online (Sandbox Code Playgroud)