gpt4 book ai didi

python - 样式,格式化切片运算符

转载 作者:太空狗 更新时间:2023-10-29 18:03:20 25 4
gpt4 key购买 nike

PEP 8没有提到切片运算符。据我了解,与其他运算符不同,它不应该被空格包围

spam[3:5]   # OK
spam[3 : 5] # NOT OK

这在使用复杂表达式时是否成立,即哪个被认为是更好的风格

     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] 肯定更常见,恕我直言,可读性更高。

如果pep8 checker有什么要经过的,: 之前的空格将被标记

[me@home]$ pep8  <(echo "spam[3:44]")   # no warnings
[me@home]$ pep8 <(echo "spam[3 : 44]")
/dev/fd/63:1:7: E203 whitespace before ':'

... 但这只是因为它假设 : 是定义文字字典的运算符,并且在运算符之前没有空格。 spam[3: 44] 因为这个原因而通过,但这似乎不对。

就此而言,我会坚持使用 spam[3:44]


嵌套算术运算有点棘手。在您的 3 个示例中,只有第二个通过了 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 ':'

但是,我发现上述所有内容乍一看都很难解析。

为了可读性和与 PEP8 的合规性,我个人会选择:

 spam[(ham(66) // 3):(44 + eggs())]

或者更复杂的操作:

 s_from = ham(66) // 3 
s_to = 44 + eggs()
spam[s_from:s_to]

关于python - 样式,格式化切片运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8092513/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com