20просмотров
22 марта 2026 г.
Score: 22
Нашел забавное. Сложение в tuple не атомарная операция. Если к list в tuple добавить элемент, то выведется ошибка, но сложение сработает >>> x = ([],)
>>> x[0] += [1]
Traceback (most recent call last): File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>> x
([1],) # Все потому, что эту операцию можно представить таким образом. Благодаря мутабельности списков первое выражение изменит список, а второе уже сломает tuple.
result = a_list.iadd([1])
a_list = result # Разложение на байт-код также показывает, что тут две операции
def add(): x[0] += [1] import dis
dis.dis(add) 34 BINARY_OP 11 (+=)
42 STORE_SUBSCR