我认为由于“惰性求值”等语句:
if True and True (...):
# do something
在Python解释器中,True and
部分之后的内容应该会被跳过。然而,与编译代码相比,我认为Python解释器无法优化明确的布尔比较这种不良风格,对吗?
if condition == True:
# do something
一个编译器会优化这个,删除
== True
部分,但是解释器每次执行代码都必须评估在 condition ==
部分后面等待的语句, 因此会做不必要的比较 == True
?!
还有其他类似的问题吗?即使我知道这个问题比较开放,但是我猜一些常见的例子是存在的?
if condition
和if condition == True
是等价的,那么编译器会很容易地将它们转换为彼此。但是这种转换不会发生,因为这两个代码片段并不等价。有一件事,如果你尝试在C中这样做,你会得到完全相同的问题;许多不等于True
的值都被认为是真。 - user2357112if 2 == True: ...
和if 2: ...
之间的区别。 - juanpa.arrivillagaif
语句中使用其他类型,或者像#DEFINE BOOL char
这样做,甚至<stdbool.h>
将true
定义为1
。 - user2357112