В 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?