在Python中,`if x:`和`if x != 0:`哪个更受欢迎?

6 投票
7 回答
11042 浏览
提问于 2025-04-16 01:04

假设 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之禅)。

撰写回答