【发布时间】:2020-05-29 19:08:49
【问题描述】:
我一直在写一些python代码,如果对象为None,则我有一个条件,如果它没有获取对象属性并检查它,则返回。这是一个示例代码:
b = None
if b is None or b.property == "something":
print("yay")
当上面运行的代码打印AttributeError: 'NoneType' object has no attribute 'property' 时下面的代码打印相同的结果。
b = None
if b.property == "something" or b is None:
print("yay")
问题:
假设在评估其中一个为真后,if 子句中有许多or 检查,其他条件可以被绕过,因为结果将是真的,所以它浪费了#compute power。
如果任何条件为 0 结果为零,则同样可以应用于 and 运算符。那么为什么上面的示例会触发 exception?
【问题讨论】:
标签: python logic logical-operators