Возможный дубликат:
Что означает плюс (+ =) в Python?
Сегодня я нашел интересную "особенность" языка python, которая сильно огорчила меня.
>>> a = [1, 2, 3]
>>> b = "lol"
>>> a = a + b
TypeError: can only concatenate list (not "str") to list
>>> a += b
>>> a
[1, 2, 3, 'l', 'o', 'l']
Как это? Я думал, что эти два должны быть эквивалентны! Хуже того, это код, который я чертовски отлаживал
>>> a = [1, 2, 3]
>>> b = {'omg': 'noob', 'wtf' : 'bbq'}
>>> a = a + b
TypeError: can only concatenate list (not "dict") to list
>>> a += b
>>> a
[1, 2, 3, 'omg', 'wtf']
WTF! У меня были списки и дикты в моем коде, и мне было интересно, как, черт возьми, я закончил добавление ключей моего dict в список, не вызывающий .keys(). Как оказалось, вот как.
Я думал, что оба утверждения должны быть эквивалентными. Даже игнорируя это, я могу понять, как вы добавляете строки в списки (поскольку строки - это только массивы символов), но словари? Возможно, если он добавит список (ключ, значение) кортежей, но захват только ключей для добавления в список кажется совершенно произвольным.
Кто-нибудь знает логику этого?