2010-06-22 89 views
3

+ \運算符在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'%t +\ 
'&ignore=.csv').readlines() 

和找不到解釋它的任何引用。

回答

18

+是加法。該行末尾的\將在下一行繼續當前語句或表達式。

+3

該死的你都擊敗了我; – Eltariel 2010-06-22 06:36:47

+7

而有趣的是,在這種情況下甚至不需要'\\'。 – 2010-06-22 06:40:07

+2

這是真的。 Python解析器可以明確地確定表達式必須在下一行繼續,因爲並非所有「分組」(在這種情況下都是parens)都已關閉。 – 2010-06-22 06:42:21

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() 
代碼

解析器將線條連成一體,因此在運行時不會浪費時間通過無用的方式將字符串添加到一起