小编cod*_*aft的帖子

如何在 Python lambda 中表达条件执行?

我发现了什么:

《Dive in to Python》中,我了解了andand运算符的特殊性质,以及如何通过and-oror技巧使用布尔运算符的短路求值来更简洁地表达条件,该技巧与 C 中的三元运算符非常相似。

C:

result = condition ? a : b
Run Code Online (Sandbox Code Playgroud)

Python:

result = condition and a or b
Run Code Online (Sandbox Code Playgroud)

这似乎很方便,因为 lambda 函数在 Python 中仅限于单行函数,但它使用逻辑语法来表达控制流。

自 Python 2.5 以来,inline-if似乎已经作为一种更易读的语法来拯救 and-or 技巧:

result = a if condition else b
Run Code Online (Sandbox Code Playgroud)

所以我猜想这是可读性较差的 and-or-construct 的 pythonic 替代品。即使我想嵌套多个条件,它看起来仍然相当全面:

result = a if condition1 else b if condition2 else c
Run Code Online (Sandbox Code Playgroud)

但在一个充满不确定性的世界中,我经常发现自己编写一些类似这样的代码来访问 abc :

result = a and hasattr(a, 'b') and hasattr(a.b, 'c') and a.b.c …
Run Code Online (Sandbox Code Playgroud)

python lambda short-circuiting inline-if conditional-statements

5
推荐指数
1
解决办法
4981
查看次数