2010-06-22 2 views
3

Что делает оператор + \ на Python?+ operator in Python

я наткнулся на этот кусок кода -

rows=urllib2.urlopen('http://ichart.finance.yahoo.com/table.csv?'+\ 
's=%s&d=11&e=26&f=2006&g=d&a=3&b=12&c=1996'%t +\ 
'&ignore=.csv').readlines() 

и не может найти какие-либо ссылки, которые объясняют его.

ответ

18

+ является дополнением. \ в конце строки продолжает текущую инструкцию или выражение на следующей строке.

+3

Черт бы вас побрали, чтобы избить меня;) – Eltariel

+7

И самое смешное, что '\\' даже не нужно в этом случае. –

+2

Это правда. Парсер Python может однозначно определить, что выражение должно продолжаться на следующей строке из-за того, что не все «группировки» (parens в этом случае) были закрыты. –

7

Это не оператор, это просто оператор + с последующим продолжением линии \

11

N.B. Продолжение \ в этом случае не нужно, так как выражение находится внутри круглых скобок. Python достаточно умен, чтобы знать, что линия продолжается до тех пор, пока все скобки, скобки и скобки не будут сбалансированы.

Ненужные символы продолжения являются моим незначительным жучком, и я удаляю их при каждой возможности. Они загромождают код, путают новичков, которые считают, что они являются своего рода оператором, и могут быть невидимо разбиты, случайно помещая пробел после них.

Также не нужен первый символ + - Python автоматически свяжет строковые литералы.

Я хотел бы также переместить оператор% в конце выражения и исключить второй +, поэтому линия может быть переписано в виде:

rows=urllib2.urlopen('http://ichart.finance.yahoo.com/table.csv?' 
        's=%s&d=11&e=26&f=2006&g=d&a=3&b=12&c=1996' 
        '&ignore=.csv' % t).readlines() 
1

Вы можете переписать код, как и

rows=urllib2.urlopen('http://ichart.finance.yahoo.com/table.csv?' 
        's=%s&d=11&e=26&f=2006&g=d&a=3&b=12&c=1996' 
        '&ignore=.csv'%t).readlines() 

Парсер соединяет линии вместе друг с другом, поэтому вы не теряете время, бесполезно добавляя строки во время выполнения