我正在使用spyder,并且我有一个类似这样的代码
detector_x, detector_y, smeared_x, smeared_y = gamma_detection(decay_positions, cos_theta, phi)
i
中第二个decay_positions
超过一行中建议的字符数(大约为90)。我具有动态PEP8分析功能,因此它自然会给我进行代码分析的警告。那么在这种情况下正确的PEP8方法是什么?是
detector_x, detector_y, smeared_x, smeared_y = \
gamma_detection(decay_positions, cos_theta, phi)
从技术上讲它仍然可以运行,但它会警告我
E122 continuation line missing indentation or outdented
还是
detector_x, detector_y, smeared_x, smeared_y = gamma_detection(
decay_positions, cos_theta, phi)
还是
detector_x, detector_y, smeared_x, smeared_y = gamma_detection(
decay_positions, cos_theta, phi)
答案 0 :(得分:0)
您提供了选项{1,2,3}。
绝对使用2或3。 他们之间的品味问题 或您最喜欢的编辑器鼓励您使用的内容。 (使用光标将所有内容放在打开的括号上方的一行上,单击RETURN,然后使用建议的缩进。) 只要
$ flake8
不要抱怨,你很金。
(通过pip install flake8
获取。)
对于很多参数, 或涉及冗长表达式的参数, 您甚至可以考虑每行列出一个参数。
如果您要分配很多长标识符, 您可能会考虑将LHS包围在元组中以进行包装:
(detector_x, detector_y,
smeared_x, smeared_y) = gamma_detection(
decay_positions,
cos_theta + epsilon * some_long_expression(),
phi)
答案 1 :(得分:0)
在VS代码上使用autopep8,您的代码将更改为以下内容:
detector_x, detector_y, smeared_x, smeared_y = \
gamma_detection(decay_positions, cos_theta, phi)
现在我看一下如果是单线的总长度,即96个字符。即使超出了〜79个字符的PEP8限制,我仍然建议将其保持为一行。实际上,如果您每行100个字符,则79个字符非常短,并且可读性不会降低。在我工作的地方,我们还将行长准则提高到100个字符。
# 96 characters
detector_x, detector_y, smeared_x, smeared_y = gamma_detection(decay_positions, cos_theta, phi)