在Python中,`if x:`和`if x != 0:`哪个更受欢迎?
假设 x
是一个整数,在Python中,写 if x:
和 if x != 0:
是一样的意思。某些编程语言的风格指南明确不允许使用前者,比如ActionScript/Flex的风格指南就说不应该在这种情况下把整数隐式转换成布尔值。
那么,Python有没有特别的偏好呢?如果能提供一个PEP或者其他权威来源的链接就最好了。
7 个回答
2
通常,我会把:
if(x)
理解为在问“这个东西存在吗?”
if( x != 0)
理解为在问“这个数字是不是零?”
4
这里没有固定的规则。下面是一些我会使用每种方式的例子:
假设我在调用一个函数,这个函数在出错时返回 -1,成功时返回 0。这种函数在 C 语言中很常见,在使用一些封装了 C 函数的 Python 库时也经常会遇到。在这种情况下,我会使用 if x:
。
另一方面,如果我准备用 x
来做除法,并且我想确保 x
不是 0
,那么我会明确地写 if x != 0
。
作为一个大致的经验法则,如果我在一个函数中把 x
当作布尔值(即真或假)来使用,那么我很可能会用 if x:
—— 即使我可以证明 x
实际上是一个整数。如果将来我决定想要传递一个布尔值(或者其他类型!)给这个函数,我就不需要修改它。
另一方面,如果我真的把 x
当作整数来用,那么我很可能会直接写出 0
。
9
这个写法:if x:
通常是用来检查布尔值,也就是判断某个条件是否为真。
对于整数来说,推荐使用明确的写法 x != 0
,这就像是说“明确的比隐含的好”(PEP 20 - Python之禅)。