在Python中换行长类名/属性名
我想把以下代码行调整一下,使其符合PEP标准,我觉得这两种写法都是可以的。我听说有些人根本不推荐使用反斜杠,你觉得哪种写法看起来更好呢?
1
bake_occ_static_pass.compute_behavior = (
bake_occ_static_pass.original_compute_behavior)
2
bake_areas_animated_pass.compute_behavior = \
bake_areas_animated_pass.original_compute_behavior
提前谢谢你。
3 个回答
1
PEP(Python增强提案)似乎更喜欢用括号,而不是反斜杠。在这种情况下,因为这一行里没有其他的括号会让人更困惑,所以我建议使用括号,而不是反斜杠。
3
根据PEP8的规定:
处理长行代码的推荐方式是使用Python在括号、方括号和大括号内的隐式换行。长行可以通过在括号内包裹表达式来分成多行。相比使用反斜杠来换行,这种方式更受欢迎。
只有在使用括号会导致语法问题或出现奇怪的换行点时,才适合使用反斜杠(例如在with
和assert
语句中)。例如:
with something('foo') as some_name, \
something_else('bar') as some_other_name:
这种写法更好:
with something('foo'
) as some_name, something_else(
'bar') as some_other_name:
1
推荐使用第一种方式。引用一下神圣的教义,也就是 PEP8 的说法:
处理长行代码的推荐方式是使用 Python 的隐式换行,也就是在括号、方括号和大括号内换行。长行代码可以通过在括号内换行来分成多行。 这种方式比用反斜杠换行要更好。
当然,有时候使用反斜杠也是合适的。例如,多个长的
with
语句不能使用隐式换行,这时候用反斜杠是可以接受的。
即使是 import
语句,PEP 328 也增加了带括号的写法,因为
from Tkinter import (Tk, Frame, Button, Entry, Canvas, Text,
LEFT, DISABLED, NORMAL, RIDGE, END)
看起来比
from Tkinter import Tk, Frame, Button, Entry, Canvas, Text, \
LEFT, DISABLED, NORMAL, RIDGE, END
更美观。