假设x
是一个整数,构造if x:
在功能上与Python中的if x != 0:
相同。某些语言的样式指南明确禁止前者 - 例如,ActionScript / Flex的样式指南指出,您不应该为此类事件隐式地将int转换为bool。
Python有偏好吗?指向PEP或其他权威来源的链接最好。
答案 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方法吗?
是的,前者写的时间稍长,但我认为is
和is not
比==
和!=
更受欢迎。这使得Python作为一种自然语言比作为编程语言更容易阅读。