В Python 2 мы могли бы переназначить True
и False
(но не None
), но все три (True
, False
и None
) считались встроенными переменными. Однако в Py3k все трое были изменены на ключевые слова документы.
Из моих собственных предположений я мог только догадываться, что это должно было предотвратить использование махинаций, таких как , которые вытекают из старой True, False = False, True
шутки. Однако в Python 2.7.5 и, возможно, раньше, такие выражения, как None = 3
, которые переназначили None
, подняли SyntaxError: cannot assign to None
.
Семантически, я не верю, что True
, False
и None
являются ключевыми словами, поскольку они, наконец, являются семантически литералами, что и сделала Java. Я проверил PEP 0 (индекс), и я не смог найти PEP, объяснив, почему они были изменены.
Есть ли преимущества в производительности или другие причины для того, чтобы сделать их ключевыми словами, а не литералами или специальными оболочками, такими как None
в python2?