При сравнении кортежа с таким списком, как...
>>> [1,2,3] == (1,2,3)
False
>>> [1,2,3].__eq__((1,2,3))
NotImplemented
>>> (1,2,3).__eq__([1,2,3])
NotImplemented
... Python не выполняет глубокое сравнение, как это делается с помощью (1,2,3) == (1,2,3)
.
Так в чем причина этого? Это потому, что изменяемый список может быть изменен в любое время (проблемы безопасности потоков) или что?
(Я знаю, где это реализовано в CPython, поэтому, пожалуйста, не отвечайте где, но почему это реализовано.)