【问题标题】:var == False or if not var [duplicate]var == False 或者如果不是 var [重复]
【发布时间】:2019-01-12 10:34:28
【问题描述】:
var = False
if not var:
    do_thing()

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

这两者有什么区别?(如果有的话) 一个比另一个快吗?

【问题讨论】:

  • 没有实际区别;如果您对超精确的分析感兴趣,可以使用dis 了解他们各自的评估方式
  • @user202729:这是关于布尔值,而不是字符串。
  • 不同之处在于not var 是可读的并且人们期望你使用什么,而var == False 让人们想知道是否还有其他一些你明确想要通过不使用not 来排除的虚假值(但不是0,因为0 == False)。
  • 当您的输入不是布尔值时,差异就开始了

标签: python boolean boolean-expression


【解决方案1】:

PEP8 "Programming Recommendations":

不要使用 == 将布尔值与 True 或 False 进行比较。

  • 是:if greeting:
  • 否:if greeting == True:
  • 更糟:if greeting is True:

您的两个测试都在这里工作,但一般来说,使用隐式布尔值被认为更“Pythonic”,因为“真实”与“虚假”通常比TrueFalse 更重要;当varNone 或空序列时,if not var: 将准确地将var 识别为虚假序列,这通常是您想要的。

就性能而言,if not var: 会更快; if var == False:必须加载varFalse,进行比较,然后进行if一直执行的隐式布尔测试; if not var: 直接执行隐式布尔测试,没有前导码。

【讨论】:

    猜你喜欢
    • 2011-05-02
    • 2021-06-18
    • 2011-10-26
    • 1970-01-01
    • 2013-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-05
    相关资源
    最近更新 更多