繁体   English   中英

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

[英]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:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM