Python PEP8打印包裹的字符串没有缩进

时间:2009-08-19 20:10:41

标签: python wrapping pep8

对此可能有一个简单的答案,只是不确定如何从我的搜索中取出它。

我在我的python代码中坚持PEP8,而我正在使用OptionParser作为我正在编写的脚本。为了防止行超过80,我在需要的地方使用反斜杠。

例如:

if __name__=='__main__':
    usage = '%prog [options]\nWithout any options, will display 10 random \
    users of each type.'
    parser = OptionParser(usage)

反斜杠后的缩进导致:

~$ ./er_usersearch -h
Usage: er_usersearch [options]
Without any options, will display 10 random     users of each type.

“随机”之后的差距让我感到困惑。我能做到:

 if __name__=='__main__':
    usage = '%prog [options]\nWithout any options, will display 10 random \
 users of each type.'
    parser = OptionParser(usage)

但这让我感到烦恼。这看起来很傻:

 if __name__=='__main__':
    usage = ''.join(['%prog [options]\nWithout any options, will display',
                     ' 10 random users of each type.'])
    parser = OptionParser(usage)

必须有更好的方法吗?

3 个答案:

答案 0 :(得分:28)

使用automatic string concatenation + implicit line continuation

long_string = ("Line 1 "
               "Line 2 "
               "Line 3 ")


>>> long_string
'Line 1 Line 2 Line 3 '

答案 1 :(得分:3)

这有效:

if __name__=='__main__':
    usage = ('%prog [options]\nWithout any options, will display 10 random '
    'users of each type.')
    parser = OptionParser(usage)

虽然我会这样说:

if __name__=='__main__':
    usage = ('%prog [options]\n'
             'Without any options, will display 10 random users '
             'of each type.')
    parser = OptionParser(usage)

(所以当字符串中有\n时,以及当我需要自动换行源代码时,我会开始一个新行。)

答案 2 :(得分:1)

试试这个:

if __name__=='__main__':
    usage = '%prog [options]\nWithout any options, will display 10 random ' \
    'users of each type.'
    parser = OptionParser(usage)