Mark Dickinson <dicki...@gmail.com> added the comment:

[Raymond]

> It is just the way the language works.

As far as I can see, the language doesn't need these constants to be in 
builtins at all - the only reason for keeping them there is backwards 
compatibility.

As an experiment I tried removing `True`, `False` and `None` from 
bltinmodule.c, and recompiling, and every single test in the test suite passed 
just fine. So apparently we're not even testing for the existence of these 
constants.

It's also fun to note that it's still possible to modify these names:

>>> import builtins
>>> builtins.__dict__["True"] = False
>>> builtins.__dict__["True"] 
False

So I'm not sure what purpose having `True`, `False` and `None` in builtins 
serves.

----------
nosy: +mark.dickinson

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue37318>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to