var == False或者if not var

12 浏览
0 Comments

var == False或者if not var

var = False
if not var:
    do_thing()

或者

var = False
if var == False:
    do_thing()

这两者之间有什么区别吗?哪一个更快一些?

0
0 Comments

在PEP8的“编程建议”中,提到不要使用==来比较布尔值和True或False。

这两个测试在这里都能正常工作,但一般来说,使用隐式布尔值更符合Python的风格,因为“真”和“假”通常比True和False更重要;if not var:将准确地将var识别为假值,当var为None或空序列时,这通常是我们想要的。

就性能而言,if not var:将更快;if var == False:必须加载var和False,执行比较,然后执行if总是执行的隐式布尔测试;if not var:直接执行隐式布尔测试,没有前导步骤。

根据PEP8的建议,我们应该避免使用var == Falseif not var来比较布尔值。而应该直接使用if var:来判断变量是否为真。这样做更符合Python的风格,并且能够更准确地识别变量是否为真值。

此外,从性能的角度来看,if not var:if var == False:更快。因为if not var:直接执行隐式布尔测试,而if var == False:需要加载var和False,执行比较,然后再进行布尔测试。

总结起来,遵循PEP8的建议,使用隐式布尔值判断变量是否为真,可以提高代码的可读性和性能。

0