_sitebuiltins?
Steve D'Aprano
steve+python at pearwood.info
Sun Sep 24 21:19:57 EDT 2017
On Mon, 25 Sep 2017 10:03 am, Stefan Ram wrote:
> What's the difference between »builtins« and »_sitebuiltins«?
>
> |>>> type.__module__
> |'builtins'
> |
> |>>> help.__module__
> |'_sitebuiltins'
>
> I mean the semantic difference. Why are some entities placed
> into »builtins« and some into »_sitebuiltins«?
Read the source. The _sitebuiltins module says:
"""
The objects used by the site module to add custom builtins.
"""
# Those objects are almost immortal and they keep a reference to their module
# globals. Defining them in the site module would keep too many references
# alive.
# Note this means this module should also avoid keep things alive in its
# globals.
Historically, the content of _sitebuiltins.py used to be in site.py. So it's
just an implementation detail: site.py was refactored to keep long-lasting
objects separate from those that are ephemeral.
`builtins` is the official public name of the built-in namespace. In Python 2,
it was unfortunately called __builtin__.
Unfortunately there is also a __builtins__ name, which is a private, CPython
implementation detail. Ignore it.
--
Steve
“Cheer up,” they said, “things could be worse.” So I cheered up, and sure
enough, things got worse.
More information about the Python-list
mailing list