代码之家  ›  专栏  ›  技术社区  ›  Cory Petosky

哪一个是'if x:'或'if x!=0:`在Python中是首选的吗?

  •  4
  • Cory Petosky  · 技术社区  · 14 年前

    x 是一个整数,构造 if x: 在功能上与 if x != 0:

    7 回复  |  直到 14 年前
        1
  •  8
  •   Yuval Adam    14 年前

    构造: if x:

    为了 int 使用显式 x != 0 最好是沿着 PEP 20 - Zen of Python ).

        2
  •  3
  •   Daniel Stutzbach Edward Leno    14 年前

    假设我正在连接某个函数,该函数在出错时返回-1,在成功时返回0。这样的函数在C语言中非常常见,当使用包装C函数的库时,它们在Python中频繁出现。如果那样的话,我会用 if x: .

    另一方面,如果我要除以 x 我想确保 不是吗 0 if x != 0 .

    粗略地说,如果我 作为一个 bool 在整个函数中,我可能会使用 如果x: 将是一个 int . 如果将来我决定通过 布尔 (或其他类型!)对于函数,我不需要修改它。

    另一方面,如果我真的 内景 ,那么我可能会把 0 .

        3
  •  1
  •   Paul Nathan    14 年前

    if(x) 成为一个关于存在的问题。

    if( x != 0) 关于一个数字的问题。

        4
  •  1
  •   tzot    14 年前

    x 是一个整数,它们是等价的,但是您应该编写与您的确切意图相匹配的代码。

    if x:
        # x is anything that evaluates to a True value
    if x != 0:
        # x is anything that is not equal to 0
    
        5
  •  0
  •   JS.    14 年前

    我是否可以建议,在这个问题上争吵的次数足以回答这个问题?

    如果说这样一个简单的说法能够制造出这样的大惊小怪,那么对我来说,这个说法显然不够清晰。写下你的意思。

    如果要检查x是否等于0,则写“If x==0”。如果你想检查x是否存在,写“如果x不是无”。

    那么就没有混乱,没有争论,没有辩论。

        6
  •  0
  •   hcalves    14 年前

    如果你想测试

    if x:
    

    更明确地说 有效期(与空容器不匹配):

    if x is not None:
    

    如果要在整数上下文中严格测试:

    if x != 0:
    

        7
  •  -2
  •   Brian S    14 年前

    不会 if x is not 0: 是Python中的首选方法,而不是 if x != 0: ?

    is is not 优先于 == != . 这使得Python作为一种自然语言比作为一种编程语言更容易阅读。