如何处理Python中的长行代码和命令

Jig*_*uff 7 python pep8 line-breaks

我试过搜索,但我找不到任何类似于我的情况.我正在编写一个程序,到目前为止,我已经坚持使用一行规则中不超过79个字符.但是我不确定在几种情况下在哪里打破线.

以下是问题领域:

        self.proc.stdin.write('(SayText "%s")\n' % text.replace('\\', '\\\\').replace('"', '\\"'))
Run Code Online (Sandbox Code Playgroud)

对于这种情况,当我在'(SayText"%s")\n'之后断开第一行时,第二行最终为80个字符长.我应该像这样在括号中的某个地方打破第二行吗?

        self.proc.stdin.write('(SayText "%s")\n'
                              % text.replace('\\',
                                             '\\\\').replace('"', '\\"'))
Run Code Online (Sandbox Code Playgroud)

或者最好将整个第三行带到第一个括号的开头,如下所示:

        self.proc.stdin.write('(SayText "%s")\n'
                              % text.replace('\\',
                              '\\\\').replace('"', '\\"'))
Run Code Online (Sandbox Code Playgroud)

另一个例子是:

        filename = tkFileDialog.askopenfilename(filetypes = (("Word list", "*.tldr"), ("All files", "*.*")))
Run Code Online (Sandbox Code Playgroud)

我应该这样做吗?

        filename = tkFileDialog.askopenfilename(filetypes = (("Word list",
                                                              "*.tldr"),
                                                             ("All files",
                                                              "*.*")))
Run Code Online (Sandbox Code Playgroud)

或这个?

        filename = tkFileDialog.askopenfilename(filetypes = (("Word list",
                                                "*.tldr"),("All files", "*.*")))
Run Code Online (Sandbox Code Playgroud)

什么是一个很好的约定?

谢谢.

Mic*_*man 4

在我看来,更喜欢较短的行的原因之一是,它使程序员更有可能将代码分解为单独的较短行,这些行更容易理解并发现错误或更好的方法来完成任务。

from __future__ import print_function    

FMT_SAY_TEXT = '(SayText "%s")'
Run Code Online (Sandbox Code Playgroud)
text_escaped = text.replace('\\', r'\\')
text_escaped = text_escaped.replace('"', r'\"')
text_out = FMT_SAY_TEXT % text_escaped
print(text_out, file=self.proc.stdin)
Run Code Online (Sandbox Code Playgroud)

对于第二个例子:

FILE_DIALOG_FILETYPES = (("Word list", "*.tldr"), ("All files", "*.*"))
Run Code Online (Sandbox Code Playgroud)
filename = tkFileDialog.askopenfilename(filetypes = FILE_DIALOG_FILETYPES)
Run Code Online (Sandbox Code Playgroud)