我想知道是否有可能在Python中找到一些等效的C#multiline lambda函数.
我想为这个方法编写一些等效的python代码.但据我所知,python中不可能有多行lambda函数.有关python等效代码的任何想法吗?
如果将表达式放在括号中,则可以在多行上定义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)
| 归档时间: |
|
| 查看次数: |
2097 次 |
| 最近记录: |