说实话,当我发现这个问题的时候,我震惊了!
问题说明:
and前后的两个条件顺序不一样,结果不一样。具体的,会先判断and前面的条件,后判断and后面的。这个特性应用在list判断是否为空上是什么重要的,很有可能因为顺序问题而报错。
实验验证:
同时满足list某个元素大于0以及list不为空:
a = [] if a and a[-1] > 0: print(True) if a and a[-1] > 0: print(True) if a[-1] > 0 and a: print(True) Traceback (most recent call last): File "<input>", line 1, in <module> IndexError: list index out of range
分析: