正如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."
我倾向于使用几个这里没有提到的方法来指定大字符串,但这些方法适用于非常特定的场景。YMMV……
Multi-line blobs of text, often with formatted tokens (not quite what you were asking, but still useful):
error_message = '''
I generally like to see how my helpful, sometimes multi-line error
messages will look against the left border.
'''.strip()
Grow the variable piece-by-piece through whatever string interpolation method you prefer:
var = 'This is the start of a very,'
var = f'{var} very long string which could'
var = f'{var} contain a ridiculous number'
var = f'{var} of words.'
Read it from a file. PEP-8 doesn't limit the length of strings in a file; just the lines of your code. :)
Use brute-force or your editor to split the string into managaeble lines using newlines, and then remove all newlines. (Similar to the first technique I listed):
foo = '''
agreatbigstringthatyoudonotwanttohaveanyne
wlinesinbutforsomereasonyouneedtospecifyit
verbatimintheactualcodejustlikethis
'''.replace('\n', '')
我倾向于使用几个这里没有提到的方法来指定大字符串,但这些方法适用于非常特定的场景。YMMV……
Multi-line blobs of text, often with formatted tokens (not quite what you were asking, but still useful):
error_message = '''
I generally like to see how my helpful, sometimes multi-line error
messages will look against the left border.
'''.strip()
Grow the variable piece-by-piece through whatever string interpolation method you prefer:
var = 'This is the start of a very,'
var = f'{var} very long string which could'
var = f'{var} contain a ridiculous number'
var = f'{var} of words.'
Read it from a file. PEP-8 doesn't limit the length of strings in a file; just the lines of your code. :)
Use brute-force or your editor to split the string into managaeble lines using newlines, and then remove all newlines. (Similar to the first technique I listed):
foo = '''
agreatbigstringthatyoudonotwanttohaveanyne
wlinesinbutforsomereasonyouneedtospecifyit
verbatimintheactualcodejustlikethis
'''.replace('\n', '')
使用黑色[https://github.com/psf/black],我像这样格式化它。
help=f"""filters, lista de filtros para cargar las base de conocimiento.
Pueden mandarse solo algunos filtros ya que no son obligatorios,
por ejemplo, si no se manda sts, se cargarán todos las bases de todos los estados.""",
因为相邻的字符串常量是自动连接的,你可以这样编码:
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行长”,它返回PEP8链接作为第一个结果,但也链接到另一个关于这个主题的StackOverflow帖子:“为什么python PEP-8应该指定79个字符的最大行长?”
另一个好的搜索短语是“python line continuation”。
可用的选项:
反斜杠:"foo" \ "bar"
"foo" + " \ "bar"
括号:
(“foo”“酒吧”)
带加号的括号:("foo" + "bar")
PEP8, E502:括号之间的反斜杠是多余的
避免
避免使用逗号:("foo", "bar")来定义一个元组。
>>> s = "a" \
... "b"
>>> s
'ab'
>>> type(s)
<class 'str'>
>>> s = "a" + \
... "b"
>>> s
'ab'
>>> type(s)
<class 'str'>
>>> s = ("a"
... "b")
>>> type(s)
<class 'str'>
>>> print(s)
ab
>>> s = ("a",
... "b")
>>> type(s)
<class 'tuple'>
>>> s = ("a" +
... "b")
>>> type(s)
<class 'str'>
>>> print(s)
ab
>>>