>>> b = []
>>> c = '1234'
>>> b += c
>>> b
['1', '2', '3', '4']
>>>
這裏發生了什麼?這不應該工作,對吧?還是我錯過了明顯的東西?將一個字符串添加到列表中
>>> b = []
>>> c = '1234'
>>> b + c
Traceback (most recent call last):
File "<pyshell#7>", line 1, in <module>
b + c
TypeError: can only concatenate list (not "str") to list
>>>
然後a += b
並不總是等同於a = a + b
?
做的是這種行爲仍然存在在Python 3.x的?我總是發現標準庫類型打破了總體契約,即不影響對原始「a」值的任何其他引用的情況下,a + = b' <=>'a = a + b'。 –
@Karl Knechtel:不幸的是,它仍然存在於Python 3.2.1中。 –
我在Python 3.2中檢查它,是的。我發現這個問題看着一個產生錯誤結果的初學者代碼。我無法在「Learning Python」中找到對此特定行爲的任何引用。我檢查了PEP203,它說'__iadd__'被使用,但他們也說'__iadd__'是就地'__add__',在這種情況下情況並非如此......也許有人可以解釋這種行爲或點/鏈接下的理性對此進行一些討論?我從卡爾的評論中明白,有人關注它 – joaquin