Python多行lambda

Bil*_*ill 3 c# python lambda

我想知道是否有可能在Python中找到一些等效的C#multiline lambda函数.

让我们说,我有这样的C#代码: 在此输入图像描述

我想为这个方法编写一些等效的python代码.但据我所知,python中不可能有多行lambda函数.有关python等效代码的任何想法吗?

Kev*_*vin 9

如果将表达式放在括号中,则可以在多行上定义lambda.这会创建一个隐含的行继续,导致在关闭括号之前忽略换行符.

>>> func = lambda a,b: (
...     b - a if a <= b else
...     a*b
... )
>>>
>>> func(23, 42)
19
Run Code Online (Sandbox Code Playgroud)

您还可以显式使用行继续符"\",但这不是Python样式指南首选的方法.(并不是说将lambdas绑定到名字是一个好主意,开始时,公平......)

>>> func = lambda a,b: \
...     b - a if a <= b else \
...     a*b
>>>
>>> func(23, 42)
19
Run Code Online (Sandbox Code Playgroud)

当然,你只能在lambda中使用表达式,而不能使用语句.所以适当的if块和returns等仍然是不可能的.


另外,这里可能没有必要使用lambdas,因为与C#不同(在最近的v.7.0之前),Python能够嵌套完整的函数:

>>> def method(x,y):
...     def func(a,b):
...             if a <= b:
...                     return b - a
...             return a * b
...     return func(x,y)
...
>>> method(23, 42)
19
Run Code Online (Sandbox Code Playgroud)