[英]Which of `if x:` or `if x != 0:` is preferred in Python?
假设x
是一个整数, if x:
的构造if x:
功能上与Python中的if x != 0:
相同。 某些语言的样式指南明确禁止前者 - 例如,ActionScript / Flex的样式指南指出,您不应该为此类事件隐式地将int转换为bool。
Python有偏好吗? 指向PEP或其他权威来源的链接最好。
构造: if x:
通常用于检查布尔值。
对于int
,使用显式x != 0
是首选 - 沿着显式的行比隐式的更好 ( PEP 20 - Python的Zen )。
这里没有硬性规定。 以下是我将使用每个示例的一些示例:
假设我正在连接某个函数,该函数在出错时返回-1,在成功时返回0。 这些函数在C中很常见,当使用包装C函数的库时,它们经常在Python中出现。 在那种情况下, if x:
我会使用。
另一方面,如果我要除以x
并且我想确保x
不是0
,那么我将是显式的并且if x != 0
写入。
作为一个粗略的经验法则,如果我在整个函数中将x
视为一个bool
,那么我很可能会使用if x:
- 即使我可以证明x
将是一个int
。 如果将来我决定将bool
(或其他类型!)传递给函数,我不需要修改它。
另一方面,如果我真的像使用int
一样使用x
,那么我很可能会拼出0
。
通常,我读到:
if(x)
是关于存在的问题。
if( x != 0)
是关于数字的问题。
这取决于你想要什么; 如果x
是一个整数,它们是等价的,但你应该编写符合你确切意图的代码。
if x:
# x is anything that evaluates to a True value
if x != 0:
# x is anything that is not equal to 0
我可能会建议对这个问题争吵的数量足以应对吗?
有人争辩说,“如果x”只应用于Z,其他用于Y,其他用于X.
如果这样一个简单的陈述能够创造这样的大惊小怪,对我而言,很明显该陈述不够明确。 写下你的意思。
如果要检查x是否等于0,则写入“if x == 0”。 如果要检查x是否存在,请写“如果x不是None”。
然后没有混乱,没有争论,没有辩论。
如果要在布尔上下文中测试x :
if x:
更明确,对于x有效性(与空容器不匹配):
if x is not None:
如果要严格测试整数上下文:
if x != 0:
最后一个实际上是隐式比较类型。
if x is not 0:
那就不是if x is not 0:
与if x != 0:
相比,是Python中的首选方法if x != 0:
?
是的,前者写的时间稍长,但我的印象is
, is not
优先于==
和!=
。 这使得Python作为一种自然语言比作为编程语言更容易阅读。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.