2011-10-11 84 views
1

是什麼意思時,它是這樣的:這是什麼意思+ =在Python中?

self.something += ('somethin',) 

什麼是「+ =」和什麼是逗號手段?

+0

至於逗號:http://stackoverflow.com/questions/3750632/why-does-adding-a-trailing-comma-after-a-string-make-it-a-tuple –

回答

6

表達a += ba = a + b,其中ab可以是數字或字符串,或元組或列表速記(但二者必須是同一類型)。

('x',)中的逗號表示這是一個元素的元組,'x'。如果逗號不存在,則括號之間只是一個'x'

+0

[迂腐]這不是其他版本的「速記」。你可以讓它做所有不同的事情...... – JBernardo

1

+= is addition and assignment into one(有時稱爲iadd或就地添加)。這是一樣的a = a + x

a = 4 
a += 5 # add 5 to a, and assign the result into a 
b = 4 
b = b + 5 # this does the same thing as += 
print a # prints out 9 
print b # prints out 9 

你也可以做其他操作這種風格,如-=*=/=&=(按位與),|=(按位或),^=(按位異或),%= (mod),**=(指數)。


('something',)tuple('something')(不含逗號)在分組中使用括號,類似於('some' + 'thing')(a + b)。爲了區分單成員元組和句法上的分組,Python使用逗號。

2

Python有一個操作符爲一個名字賦值,它的值爲=

該語言還支持許多其他運算符,如+,-,**用於在對象的特殊方法中定義的操作。

雖然+是添加東西的數學符號,但可以自定義以執行任何您想要的操作。

有時您想要進行操作並使用相同的名稱進行存儲。對於這些情況,您有就地操作員,這些操作員只是您正在使用的正常操作員以及=標誌。

對於不可變對象(數字,字符串,元組等),您不能進行就地更改,因爲......它們是不可變的。所以,就地方法和正常方法完成的工作完全相同,然後是賦值。

對於可變對象不同的是明確:

就地加:

>>> a = [] 
>>> b = a 
>>> b += [1,2] 
>>> a 
[1, 2] 

添加和分配:

>>> a = [] 
>>> b = a 
>>> b = b + [1,2] 
>>> a 
[] 

看到了嗎?該對象本身是用列表的就地添加進行轉換的,但在另一種情況下,創建了一個新對象。


對於你的其他問題,逗號是元組分隔符。

a = (1) # Just number 1 inside parenthesis 
a = (1,) # A tuple with one element