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

时间:2010-07-09 21:28:13

标签: python coding-style conditional

假设x是一个整数,构造if x:在功能上与Python中的if x != 0:相同。某些语言的样式指南明确禁止前者 - 例如,ActionScript / Flex的样式指南指出,您不应该为此类事件隐式地将int转换为bool。

Python有偏好吗?指向PEP或其他权威来源的链接最好。

7 个答案:

答案 0 :(得分:7)

构造:if x:通常用于检查布尔值。

对于int,首选使用显式x != 0 - 显式的行优于隐式PEP 20 - Zen of Python)。

答案 1 :(得分:2)

这里没有硬性规定。以下是我将使用每个例子的一些例子:

假设我正在连接某个函数,该函数在出错时返回-1,在成功时返回0。这些函数在C中很常见,当使用包装C函数的库时,它们经常在Python中出现。在这种情况下,我会使用if x:

另一方面,如果我要除以x并且我想确保x不是0,那么我将是明确的并写下if x != 0

作为一个粗略的经验法则,如果我在整个函数中将x视为bool,那么我很可能会使用if x: - 即使我可以证明{ {1}}将是x。如果将来我决定将int(或其他类型!)传递给函数,我就不需要修改它。

另一方面,如果我真的像bool一样使用x,那么我很可能会拼出int

答案 2 :(得分:1)

通常,我读到:

if(x)是关于存在的问题。

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

答案 3 :(得分:1)

这取决于你想要什么;如果x是一个整数,它们是等价的,但你应该编写符合你确切意图的代码。

if x:
    # x is anything that evaluates to a True value
if x != 0:
    # x is anything that is not equal to 0

答案 4 :(得分:0)

我可能会建议在这个问题上争吵的数量足以回答它吗?

有些人认为“如果x”只能用于Z,其他用于Y,其他用于X.

如果这样一个简单的陈述能够创造这样的大惊小怪,对我而言,很明显该陈述不够明确。写下你的意思。

如果要检查x是否等于0,则写入“if x == 0”。如果要检查x是否存在,请写“如果x不是无”。

然后没有混乱,没有争论,没有辩论。

答案 5 :(得分:0)

如果要在布尔上下文中测试 x

if x:

更明确, x 有效性(与空容器不匹配):

if x is not None:

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

if x != 0:

最后一个实际上是隐式比较类型。

答案 6 :(得分:-1)

if x is not 0:

相比,if x != 0:不是首选的Python方法吗?

是的,前者写的时间稍长,但我认为isis not==!=更受欢迎。这使得Python作为一种自然语言比作为编程语言更容易阅读。