如果我有一个很长的代码行,是否可以在下一行继续它,例如:
url='http://chart.apis.google.com/chart?chxl=1:|0|10|100|1,000|10,000|'
+ '100,000|1,000,000&chxp=1,0&chxr=0,0,' +
max(freq) + '300|1,0,3&chxs=0,676767,13.5,0,l,676767|1,676767,13.5,0,l,676767&chxt=y,x&chbh=a,1,0&chs=640x465&cht=bvs&chco=A2C180&chds=0,300&chd=t:'
答案 0 :(得分:21)
我会像这样写
url=('http://chart.apis.google.com/chart?chxl=1:|0|10|100|1,000|10,000|'
'100,000|1,000,000&chxp=1,0&chxr=0,0,%(max_freq)s300|1,0,3&chxs=0,676767'
',13.5,0,l,676767|1,676767,13.5,0,l,676767&chxt=y,x&chbh=a,1,0&chs=640x465'
'&cht=bvs&chco=A2C180&chds=0,300&chd=t:'%{'max_freq': max(freq)})
请注意,+
不需要加入字符串。这种方式更好,因为字符串在编译时而不是运行时连接。
我还在您的字符串中嵌入了%(max_freq)s
,这已从最后的dict
替换
如果您想让网址处理更简单,请查看urllib.urlencode()
答案 1 :(得分:16)
这样的大多数语法问题都在PEP 8中处理。有关此问题的答案,请参阅“代码布局”部分。
()
,{}
& []
来自PEP-8:
包装长行的首选方法是使用Python的隐含行 在括号,括号和括号内继续。如果有必要,你 可以在表达式周围添加一对额外的括号......
这意味着你的例子是这样的:
url= ('http://chart.apis.google.com/chart?chxl=1:|0|10|100|1,000|10,000|' +
'100,000|1,000,000&chxp=1,0&chxr=0,0,' +
max(freq) +
'300|1,0,3&...chco=A2C180&chds=0,300&chd=t:')
\
来自PEP-8:
...但有时使用反斜杠看起来更好。确保缩进续行 适当。
url = 'http://chart.apis.google.com/chart?chxl=1:|0|10|100|1,000|10,000|' + \
'100,000|1,000,000&chxp=1,0&chxr=0,0,' + \
max(freq) + \
'300|1,0,3&...chco=A2C180&chds=0,300&chd=t:'
在这种情况下,我们只想在网址中更改一件事:max(freq)
。为了有效地将其插入到新字符串中,我们可以将format
方法与数字或命名参数一起使用:
url = "http://...{0}.../".format(max(freq))
url = "http://...{max_freq}.../".format(max_freq=max(freq))
答案 2 :(得分:2)
Python将两个字符串文字组合在一起,所以
>>> s = "abc" "def"
>>> s
'abcdef'
但是如果它们在两行上就行不通,因为Python不知道下一行是命令的一部分。要解决此问题,您可以使用反斜杠或括号。
>>> s = ("hello, world"
"!")
>>> s
'hello, world!'
并且您不需要+
将字符串附加到一起。如String Literal Concatenation中所述,您仍然需要添加非max(freq)
等非文字。这稍微有点效率,但更重要的是更清晰,并且可以对链接的部分字符串进行注释,如链接的Python文档中所示。
答案 3 :(得分:1)
是的,请使用反斜杠 \
,如下所示:
url='http://chart.apis.google.com/chart?chxl=1:|0|10|100|1,000|10,000|' + \
'100,000|1,000,000&chxp=1,0&chxr=0,0,' + \
max(freq) + '300|1,0,3&chxs=0,676767,13.5,0,l,676767|1,676767,13.5,0,l,676767&chxt=y,x&chbh=a,1,0&chs=640x465&cht=bvs&chco=A2C180&chds=0,300&chd=t:'
或者您可以用括号 ()
包装表达式:
url=('http://chart.apis.google.com/chart?chxl=1:|0|10|100|1,000|10,000|' +
'100,000|1,000,000&chxp=1,0&chxr=0,0,' +
max(freq) + '300|1,0,3&chxs=0,676767,13.5,0,l,676767|1,676767,13.5,0,l,676767&chxt=y,x&chbh=a,1,0&chs=640x465&cht=bvs&chco=A2C180&chds=0,300&chd=t:')