Julien Palard added the comment:
Hi Xavier,
> It is not the dictionary of builtin module, which is inserted in , but the
> current __builtin__ global
It looks wrong, I'll even say the exact contrary: It _is_ the dictionary of
builtin module which is inserted in, not the current __builtin__ global, with
this proof:
$ ./python
Python 3.7.0a0 (default, Nov 29 2016, 11:20:17)
[GCC 5.4.1 20161019] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> print(id(__builtins__), id(__builtins__.__dict__))
140325888797784 140325888840368
>>> eval("""print(id(__builtins__))""", {})
140325888840368
> the current __builtin__ global which happen to be normally the dictionnary of
> builtin.
That's not necessarily true, according to [the builtins
doc](https://docs.python.org/dev/library/builtins.html):
> The value of __builtins__ is normally either this module or the value of this
> module’s __dict__ attribute.
Typically:
$ ./python
Python 3.7.0a0 (default, Nov 29 2016, 11:20:17)
[GCC 5.4.1 20161019] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import builtins
>>> id(builtins), id(builtins.__dict__), id(__builtins__)
(139706743340120, 139706743382704, 139706743340120)
Here, __builtins__ is the module, not its dict.
----------
_______________________________________
Python tracker <[email protected]>
<http://bugs.python.org/issue26363>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com