【发布时间】:2012-02-22 18:23:40
【问题描述】:
str='test'
example={'test':'value',}
return str in example and example[str] or None
为什么在example 中对密钥str 进行看似多余的额外测试?
【问题讨论】:
-
用英语和最近的 Python 你会写
return example[str] if str in example else None -
@JochenRitzel - 这再次错过了我在回答中提出的观点。根据他的示例,它需要捕获真值测试为 False 的值
-
@jdi:大多数时候,当我看到
or用于返回两个值之一时,其意图并不是真正阻止返回 0、''、[] 等,这只是默认的“聪明”单行,因为人们担心如果他们必须输入整个if块/表达式,他们的键盘会磨损。我个人认为这有点反模式。在这种情况下,我猜您无法区分存储在键下的“虚假”值与未存储的键的事实更有可能是未考虑的极端情况(即错误),而不是所需的行为。 -
我不会以任何方式捍卫 OP 发布的实际代码。我只是想回应他对这段代码的询问。这不是他意图的问题,而是他要求扩展的确切 sn-p。在这个 sn-p 中,它确实过滤掉了 eval 为 False 的值。如果他的问题是“有没有更好的方法来实现这个 x 或 y 结果?”,那么就会有不同的答案流提供替代方案。
标签: python testing logic expression