Python PEP8 打印换行字符串且无缩进

11 投票
3 回答
2362 浏览
提问于 2025-04-15 13:43

这个问题可能有简单的答案,只是我不太确定怎么从我的搜索中找到它。

我在写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.

在“random”后面的空格让我觉得不舒服。我可以这样做:

 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 个回答

1

试试这个:

if __name__=='__main__':
    usage = '%prog [options]\nWithout any options, will display 10 random ' \
    'users of each type.'
    parser = OptionParser(usage)
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 时,我会开始新的一行,还有当我需要换行显示源代码的时候。)

28

使用自动字符串连接隐式换行

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


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

撰写回答