确定答案后,Python 和 和 或 操作停止,并返回上一个扫描对象的值。它们不返回 True 或 False 。我喜欢这个功能,发现自己一直在使用它。
由于非空字符串算作True
True and "asdf" or absolutely_anything_here_or_following
停止计算到达 或的时间, 因为现在已经确定了答案( 或 值之一为true),并返回它检查的最后一项内容(“ asdf”)。甚至不检查其他操作数。
另一方面,当
False and "asdf" or absolutely_anything_here
命中 or ,它尚不知道答案,因此继续下一个操作数。只要absolute_anything_here是最后一个操作,就可以确定答案并返回最后扫描的内容。