首页 > 解决方案 > 三元运算符中的 Lambda 意外行为

问题描述

>>> (lambda: 1 if True else lambda: 2)()
1
>>> (lambda: 1 if False else lambda: 2)()
<function <lambda>.<locals>.<lambda> at 0x7f5772e8eef0>
>>> (lambda: 1 if False else lambda: 2)()()
2

为什么它需要调用后者两次?

谢谢。

标签: pythonlambdaternary-operator

解决方案


像这样写lambda: 1 if condition else lambda: 2会得到这样的解释:

lambda: (1 if condition else lambda: 2)

您需要这样编写它才能使其按预期工作:

(lambda: 1) if condition else lambda: 2

推荐阅读