wxl*_*ife 25 python coding-style pep8
我有这个代码:
some_list = range(a, b+1)
Run Code Online (Sandbox Code Playgroud)
用vim的pep8插件检查我的编码风格后,我得到了这个警告:
missing whitespace around operator
Run Code Online (Sandbox Code Playgroud)
似乎要符合PEP 8我应该写这个吗?
some_list = range(a, b + 1)
Run Code Online (Sandbox Code Playgroud)
但我已多次阅读PEP 8 - Python代码样式指南,但无法找到适用于上述警告的规则.
所以我想知道:当使用PEP-8样式时,在函数的参数中是否需要围绕运算符(+, - ,*,/等)的空格?
Mar*_*ery 49
当你在2013年提出要求时,你的Vim插件是错误的...但是在2010年,当它被创作时.PEP 8已经多次改变,你问题的答案也发生了变化.
最初,PEP 8包含以下短语:
算术运算符周围的空格
根据该规则,
range(a, b+1)
Run Code Online (Sandbox Code Playgroud)
是毫无疑问的错误,应该写成
range(a, b + 1)
Run Code Online (Sandbox Code Playgroud)
这就是pycodestyle(Python linter,以前称为pep8.py,提问者的Vim插件在引擎盖下使用)实施了几年的规则.
然而,这在2012年4月发生了变化.这种直截了当的语言没有留下任何自由裁量权的空间被这个非常简单的建议所取代:
如果使用具有不同优先级的运算符,请考虑在具有最低优先级的运算符周围添加空格.用你自己的判断; 但是,永远不要使用多个空格,并且在二元运算符的两边始终具有相同数量的空白.
令人困惑的是,说明这条规则的例子原本保持不变(因此与散文相矛盾).这最终是固定的,但不是很好,这些例子仍然令人困惑,似乎意味着比散文更严格,更不主观的规则.
仍然有一条规则要求某些特定运算符周围有空格:
总是围绕这些二元运算符在任一侧的单个空间:分配(
=
),增量赋值(+=
,-=
等),比较(==
,<
,>
,!=
,<>
,<=
,>=
,in
,not in
,is
,is not
),布尔值(and
,or
,not
).
但要注意,这个规则是明确了解哪些运营商是指和算术运算符一样+
都没有在列表中.
因此,PEP目前的形式并没有规定你是否应该在+
运算符周围使用空格(或者像*
和/
和其他算术运算符**
).你可以"自己动手".
顺便说一句,pycodestyle linter 在2012年末改变了它的行为,以反映PEP的变化,将运算符周围的空格分为两个错误代码E225(因为PEP 8仍然需要空格的操作符周围没有使用空格默认情况下启用,并且E226(未使用算术运算符周围的空格),默认情况下会被忽略.鉴于他所看到的错误,问题提问者在2013年提出这个问题时,肯定会使用略显过时的版本.
mus*_*.0x 17
http://www.python.org/dev/peps/pep-0008/#other-recommendations
始终围绕这些二元运算符,两边都有一个空格:赋值(=),扩充赋值(+ =, - =等),比较(==,<,>,!=,<>,<=,> = ,in,not in,is,is not),布尔(和,或者,不是).
例外情况=
是用于设置命名参数的时间.
编辑:
我查看了Python标准库的源代码,发现上面出现的场景:
http://hg.python.org/cpython/file/9ddc63c039ba/Lib/json/decoder.py#l203
end = _w(s, end + 1).end()
Run Code Online (Sandbox Code Playgroud)