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.

-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to