Python编码风格:换行方式

5
根据http://docs.python.org/tutorial/controlflow.html的描述:
将行包装,以使它们不超过79个字符。
通常我在第80行使用换行符,但有时我有需要很多参数的函数,例如:
extractor.get_trigger_info(cur,con,env,family,iserver,version,login,password,prefix,proxyUser,proxyPass,proxyServer,triggerPage,triggerInfo)

那么,如何保持Python编码风格指南的一致性呢?对于具有许多参数的函数,最佳实践是什么呢?
提前致谢。

1
需要大量参数有点像代码异味。也许是时候重构了? - Douglas Leeder
你能给我一个例子吗?我正在学习Python,并使用问题中提供的链接来保持正确性。 - thclpr
例如,您可以创建一个包含所有这些数据的类,并简单地传递类实例。额外的好处是:您的类可以自行检查无效参数。我还建议在每个逗号后加上一个空格以获得良好的可读性,但PEP8并没有明确推荐它(但从表达式和语句中的空格示例中可以推断出来)。 - hochl
2个回答

7

这类问题的权威参考是 PEP 8。PEP 8 允许你在几乎任何地方断行(只要你在二元运算符后断行,并在括号内使用隐式行连续)。每当你断行时,通常下一行会从开括号后的列开始:

def func_with_lots_of_args(arg1, arg2, arg3,
                           arg4, arg5):

我的个人风格是尽量安排每行断行后的内容长度大致相同。

def func(arg1, arg2, arg3,
         arg4, arg5, arg6,
         kwd='foobar'):

而不是:

def func(arg1, arg2, arg3,
         arg4, arg5, arg6, kwd='foobar'):

虽然PEP8并没有明确规定你需要这样做。


顺便说一句,如果你有一个带有这么多位置参数的函数,你应该重新考虑你的程序设计。


感谢您的解释和PEP 8的参考。我会考虑重新设计,因为大部分代码没有类,只有函数。 - thclpr
@hochl -- 根据您的建议更新了代码。我对此持反复意见(但我知道很多人喜欢它)。 - mgilson

0

我建议你:

  1. 使用两个自动化工具pyflakes和pep8.py来保持你的代码整洁(有各种文本编辑器插件可用)

  2. 选择你认为最好的方法,并在整个项目中坚持这个方法。如果已经有一种方法论,请坚持使用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接