geo*_*org 11 python coding-style
PEP 8未提及切片运算符.根据我的理解,与其他运算符不同,它不应该用空格包围
spam[3:5] # OK
spam[3 : 5] # NOT OK
Run Code Online (Sandbox Code Playgroud)
在使用复杂表达式时,这是否成立,即哪一个被认为是更好的样式
1. spam[ham(66)//3:44+eggs()]
2. spam[ham(66) // 3: 44 + eggs()]
3. spam[ham(66) // 3 : 44 + eggs()]
4. something else?
正如您已经提到的,PEP8没有明确提到该格式的切片运算符,但spam[3:5]肯定更常见,并且IMHO更具可读性.
如果pep8检查器是任何东西,之前的空格:将被标记
[me@home]$ pep8 <(echo "spam[3:44]") # no warnings
[me@home]$ pep8 <(echo "spam[3 : 44]")
/dev/fd/63:1:7: E203 whitespace before ':'
Run Code Online (Sandbox Code Playgroud)
...但这仅仅是因为它假定:是运算符来定义文字字典,并且在运算符之前不会有空格.spam[3: 44]因为这个原因通过,但这似乎不对.
在那个数字上,我坚持spam[3:44].
嵌套算术运算有点棘手.在您的3个示例中,只有第2个通过PEP8验证:
[me@home]$ pep8 <(echo "spam[ham(66)//3:44+eggs()]")
/dev/fd/63:1:13: E225 missing whitespace around operator
[me@home]$ pep8 <(echo "spam[ham(66) // 3:44 + eggs()]") # OK
[me@home]$ pep8 <(echo "spam[ham(66) // 3 : 44 + eggs()]")
/dev/fd/63:1:18: E203 whitespace before ':'
Run Code Online (Sandbox Code Playgroud)
但是,我发现以上所有内容都难以乍一看.
为了便于阅读和遵守PEP8,我个人会去:
spam[(ham(66) // 3):(44 + eggs())]
Run Code Online (Sandbox Code Playgroud)
或者更复杂的操作:
s_from = ham(66) // 3
s_to = 44 + eggs()
spam[s_from:s_to]
Run Code Online (Sandbox Code Playgroud)