python - 三元运算符中的 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
为什么它需要调用后者两次?
谢谢。
解决方案
像这样写lambda: 1 if condition else lambda: 2
会得到这样的解释:
lambda: (1 if condition else lambda: 2)
您需要这样编写它才能使其按预期工作:
(lambda: 1) if condition else lambda: 2
推荐阅读
- azure-api-management - 为 APIM 产品中的所有 API 应用 CORS 策略
- c - 链表有问题,程序不会打印元素
- vue.js - 如何控制套接字连接请求何时从客户端发送到后端?
- xcode - 无法从 .xcconfig 设置捆绑标识符以进行自动签名
- c - 我是否正确地在函数中实现指针?
- kubernetes - Kubernetes Secret 是如何挂载的?
- android - 启动一个fragment就是重启父fragment
- python-3.x - Snakemake - 如何使用文件的每一行作为输入?
- python - 有多个存储桶时如何从s3指定存储桶路径
- c# - 在 Azure Functions 中运行时 Environment.Exit 有什么作用?