首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何编写符合PEP8和防止E501的超长字符串

如何编写符合PEP8和防止E501的超长字符串
EN

Stack Overflow用户
提问于 2009-12-09 23:20:55
回答 9查看 96.6K关注 0票数 241

正如PEP8建议的,将python程序的列规则保持在80列以下,我如何才能遵守长字符串的规则,即

s = "this is my really, really, really, really, really, really, really long string that I'd like to shorten."

我该如何将其扩展到下面的行,即

s = "this is my really, really, really, really, really, really" + 
    "really long string that I'd like to shorten."
EN

回答 9

Stack Overflow用户

发布于 2009-12-09 23:31:50

因为相邻的字符串常量是自动连接的,所以您可以这样编写代码:

s = ("this is my really, really, really, really, really, really, "  
     "really long string that I'd like to shorten.")

注意,没有加号,我在示例的格式后面添加了额外的逗号和空格。

就我个人而言,我不喜欢反斜杠,我记得我在某处读到过,它的用法实际上是被弃用的,而支持这种更明确的形式。记住“显式比隐式更好”。

我认为反斜杠不太清楚,也不太有用,因为这实际上是在转义换行符。如果有必要的话,不能在它后面加上一个行尾注释。使用连接的字符串常量可以做到这一点:

s = ("this is my really, really, really, really, really, really, " # comments ok
     "really long string that I'd like to shorten.")

我在谷歌上搜索"python line length“,它会返回PEP8链接作为第一个结果,但也会链接到另一个关于这个主题的StackOverflow帖子:"Why should Python PEP-8 specify a maximum line length of 79 characters?”。

另一个很好的搜索短语是"python line continuation“。

票数 341
EN

Stack Overflow用户

发布于 2009-12-09 23:24:56

我认为你问题中最重要的词是“建议”。

编码标准是很有趣的事情。通常,他们提供的指导在编写时有很好的基础(例如,大多数终端无法在一行中显示> 80个字符),但随着时间的推移,它们在功能上变得过时,但仍然严格遵守。我猜你在这里需要做的是权衡“破坏”这个特定建议的相对优点与代码的可读性和可维护性。

很抱歉,这不能直接回答您的问题。

票数 17
EN

Stack Overflow用户

发布于 2009-12-09 23:24:16

您丢失了一个空格,并且您可能需要一个行连续字符,即。一个\

s = "this is my really, really, really, really, really, really" +  \
    " really long string that I'd like to shorten."

或者甚至是:

s = "this is my really, really, really, really, really, really"  \
    " really long string that I'd like to shorten."

括号也可以用来代替行的继续,但是您可能会让人认为您打算拥有一个元组,并且刚刚忘记了一个逗号。举个例子:

s = ("this is my really, really, really, really, really, really"
    " really long string that I'd like to shorten.")

对比:

s = ("this is my really, really, really, really, really, really",
    " really long string that I'd like to shorten.")

使用Python的动态类型,代码可以以任何一种方式运行,但会产生不正确的结果,而不是您想要的结果。

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1874592

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档