【发布时间】:2016-10-22 14:03:17
【问题描述】:
我要在这里问的问题has 被问到before,但这些问题/答案没有提及我想知道的内容。
我记得几个月前,我有一个相当大的 Python 脚本,我使用的是if x:,因为它更短而且我很懒。我不记得是哪个版本的 Python,但我记得收到了 DeprecationWarning(或 PendingDeprecationWarning?)关于与 True 的隐式比较。
现在,我正在尝试写something 其他人 可能会阅读。我到处都在使用if x == True 和if x is not None,而pep8 和pylint 都在抱怨这个,说我应该使用if x:。
就个人而言,我认为if x: 的可读性要差得多,但pep8(程序)和PEP 8(文档)都不同意。
Google 在让我确定哪个版本方面并没有太大帮助,如果有的话,Python 为 if x: 提供了 DeprecationWarning,所以我想知道 SO 社区是否可以提供见解。
我应该担心这个吗?真的有那么重要吗?
【问题讨论】:
-
你试过
if 1:吗? if 条件仍然成立。我更喜欢if x==True.Explicit is better than implicit -
在发出警告的脚本中,
x的类型是什么?可能是定义该类型的库已弃用转换为bool。 -
@BhargavRao 我知道
==和is以及与True和None的比较工作,这不是我要问的。跨度> -
嗯,这几乎是关于品味的争论。
PEP-8是一种风格建议,而且是一个很好的建议。但这绝不是要求,所以如果你觉得它提高了可读性,你绝对可以偏离。只要保持一致!来自import this:可读性很重要。 -
if x:是完全标准的 Python,当x是布尔值时,首选形式。它必须是某种产生错误的类。