Python里逻辑运算看起来很简单,and、or、not,可实际上挺多坑的。Crossin讲了好几个例子,帮助大家避开这些坑。如果你没踩过这些坑,说明代码写得还不够多。 第一个问题是运算结果不一定是True或者False,实际上是返回最后那个“决定命运”的值。比如and运算,如果左边是真的,那就看右边,返回右边的值;如果左边是假的,就直接返回左边的值。所以很多人喜欢用name = input or "匿名"这种写法来设置默认值。 第二个问题是and和or的优先级不一样。2 or 1的结果是2,再加上2 and 0就是0了。可实际上and的优先级比or高,所以结果是2。第三个问题是链式比较看起来有点诡异。比如1 < 2 < True,大家可能觉得应该是True,可实际上是False。因为链式比较相当于把中间的比较用and连接起来了。 第四个问题是关于all([])的含义。大家以为空列表all([])会是False或False(不太清楚),可实际上是True或False。all函数只要没遇到假值就认为是真。第五个问题是短路求值导致代码跳过不执行。比如and运算中如果左边是假的话右边的代码就不执行了。所以要注意这个特性给程序带来的影响。 第六个问题就是True和False当作数字用了。大家可能以为True + 1会报错,但实际上没问题。因为True和False都是int的子类。所以可以直接用来做加减乘除运算。 总结一下这几个常见的错误吧。希望大家能理解这些错误发生的原因,知其然更要知其所以然,下次就能避开同样的错误了。 最后,还要提醒大家一点:只管结果而忽略逻辑的话,不管是自己写的代码还是AI生成的代码都可能有隐患哦!