How should I write very long lines of code?
Where to look for help in future
Most syntax problems like this are dealt with in PEP 8. For the answer to this question, you can refer to the section "Code Layout".
Preferred way : Use ()
, {}
& []
From PEP-8:
The preferred way of wrapping long lines is by using Python's implied line continuation inside parentheses, brackets and braces. If necessary, you can add an extra pair of parentheses around an expression...
This means your example would like like this:
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:')
The alternate way: Use \
From PEP-8:
...but sometimes using a backslash looks better. Make sure to indent the continued line appropriately.
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:'
Avoiding concatenation
String formatting
In this case, we only have a single thing that we would like to be changed in the URL: max(freq)
. In order to efficiently insert this into a new string, we can use the format
method with numerical or named arguments:
url = "http://...{0}.../".format(max(freq))
url = "http://...{max_freq}.../".format(max_freq=max(freq))
I would write it like this
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)})
Note that the +
are not required to join the strings. It is better this way because the strings are joined at compile time instead of runtime.
I've also embedded %(max_freq)s
in your string, this is substituted in from the dict
at the end
Also check out urllib.urlencode()
if you want to make your url handling simpler