Дэвид Макайвер собрал коллекцию странностей Питона.
Изменяемые типы внутри неизменяемых
Если изменить список, находящийся в кортеже, то вылетает ошибка. Но список всё равно меняется.
>>> x = ([],)
>>> x[0] += [1]
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-11-bbb20d4e3867> in <module>()
----> 1 x[0] += [1]
TypeError: 'tuple' object does not support item assignment
>>> x[0]
[1]
Неочевидная ассоциативность
>>> 0 == 1 is False
False
>>> (0 == 1) is False
True
>>> 0 == (1 is False)
True
Выражение интерпретируется как цепочка операторов: (0 == 1) and (1 is False)
.
Сравнение множеств
>>> {1} <= {2}
False
>>> {1} >= {2}
False
>>> {1} < {-1, 1}
True
Для множеств сравнение определно как проверка, является ли одно множество подмножеством другого.