Я случайно узнал об этом:
>>> l = []
>>> l + 'a'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can only concatenate list (not "str") to list
>>> l += 'a'
>>> l
['a']
>>> l + 'abcd'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can only concatenate list (not "str") to list
>>> l += 'abcd'
>>> l
['a', 'a', 'b', 'c', 'd']
Это ожидаемое поведение? Я нигде не могу найти объяснения этому, и это кажется мне действительно странным. потому что это итерация, поэтому я попробовал:
>>> class Test:
... l = [1, 2, 3]
...
... def __iter__(self):
... for i in self.l:
... yield i
...
>>> l += Test()
>>> l
['a', 'a', 'b', 'c', 'd', 1, 2, 3]
>>> l + Test()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can only concatenate list (not "Test") to list
Теперь это кажется довольно странным и не очень pythoni c, мне было интересно, может ли это быть ошибкой, какие-нибудь мысли?