代码之家  ›  专栏  ›  技术社区  ›  patchwork

检查False的正确方法是什么?[副本]

  •  19
  • patchwork  · 技术社区  · 8 年前

    哪个更好?(为什么?)

    if somevalue == False:
    

    if somevalue is False:
    

    如果 somevalue 是一根绳子吗?

    2 回复  |  直到 2 年前
        1
  •  22
  •   MSeifert    8 年前

    这取决于什么 somevalue 可以是:如果 有些价值 可以是任何你可以检查它是一个布尔值并且 not :

    if isinstance(somevalue, bool) and not somevalue
    

    这不依赖于 False 单身汉。如果总是单身,你也可以这样做:

    if somevalue is False
    

    但是 Python的PEP8声明,您不应该关心它是否与类有关,只需使用:

    if not somevalue
    

    这将评估 有些价值 是“假的”。看见 Python documentation on Truth value testing .

    PEP8声明:

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

    并给出了以下示例:

    Yes:   if greeting:
    No:    if greeting == True:
    Worse: if greeting is True:
    

    在您的案例中,这意味着:

    Yes:   if not greeting:
    No:    if greeting == False:
    Worse: if greeting is False:
    

    请记住,除空字符串外,每个字符串都被视为“真实的” '' .

        2
  •  3
  •   ForceBru    8 年前

    is 正在检查两个对象是否是字面上的 同一对象 . == 正在检查相等性。

    如果你想检查某事是否是错误的,例如。 ,与相对 True if something == False .

    正如评论中提到的,你当然可以这样做 if not something ,它可能会大大提高可读性,但它与 if bool(something) == False .

    我更喜欢平等,因为在我看来, 真的 False 应该表现得像 1 0 就存在而言 真的 例如 ("a" == "a") == False 计算结果为 错误 就像 ("a" == "a") == 0