用Python写多行Lambda函数的方法

5,159 阅读2分钟

Can you write Multilple Lines Lambda in Python

在Python中,你可以用def关键字定义普通函数,用lambda关键字定义lambda函数。你可以在需要函数对象的地方使用Lambda函数。

什么是Python lambda函数?

Python lambda 只是另一种定义函数的方法,有一点不同:它一般是单行函数。Lambda 函数可以有零个多个参数,但它只有一个表达式。

Python 中的 lambda 函数也被称为匿名函数,因为它的定义没有名字。

语法

lambda arguments: expression

lambda 函数的返回值是这个表达式被评估的值。

例子

fun = lambda x: x * x
print(fun(3))

输出值

9

如果你检查lambda的类型,那么它返回一个类函数。要检查一个变量的数据类型,请使用 type() 函数。

fun = lambda x: x * x

print(type(fun))

输出

<class 'function'>

现在,一个价值百万的问题是,你能在Python中写一个多行的lambda函数吗?让我们来讨论这个问题。

你能写Python lambda多行吗?

,你不能在Python中写多行lambda。lambda 函数只能有一个表达式。这个问题的一个逻辑答案是,如果你想写多行函数,那么你应该在Python中使用正则函数;为什么要去写多行lambdas。

Guido van Rossum(Python的创造者)在他的一篇博文中回答了这个确切的问题。所以他承认这在理论上是可能的,但解决方案不是Pythonic的方式来做。

即使你想这样做,然后如果你写的话,就会变得很难看,所以解决方案是做一个大括号表达式。

lambda: (
    chaosWalking('tom'),
    quitePlace(2),
    blackWidow('SJ'))

这是在Python中写多行lambda函数的一种非pythonic 方式

lambda 函数的产生是为了方便你写短的解决方案。如果成为超过一行简单代码的东西,你最好使用一个标准的函数定义。

这就是Python多行lambda函数教程的内容。