]> granicus.if.org Git - python/commitdiff
SF patch #1303595: improve description of __builtins__, explaining how it
authorFred Drake <fdrake@acm.org>
Sat, 10 Jun 2006 20:01:34 +0000 (20:01 +0000)
committerFred Drake <fdrake@acm.org>
Sat, 10 Jun 2006 20:01:34 +0000 (20:01 +0000)
varies between __main__ and other modules, and strongly suggest not touching
it but using __builtin__ if absolutely necessary

Doc/ref/ref4.tex

index dcdc8232552e6ef8beaf47d38cb6b760b4736b59..12a2b92e1676376c0e31ac31e16b82e2fa7c8df4 100644 (file)
@@ -97,10 +97,20 @@ searched.  The global statement must precede all uses of the name.
 The built-in namespace associated with the execution of a code block
 is actually found by looking up the name \code{__builtins__} in its
 global namespace; this should be a dictionary or a module (in the
-latter case the module's dictionary is used).  Normally, the
-\code{__builtins__} namespace is the dictionary of the built-in module
-\module{__builtin__} (note: no `s').  If it isn't, restricted
-execution\indexii{restricted}{execution} mode is in effect.
+latter case the module's dictionary is used).  By default, when in the
+\module{__main__} module, \code{__builtins__} is the built-in module
+\module{__builtin__} (note: no `s'); when in any other module,
+\code{__builtins__} is an alias for the dictionary of the
+\module{__builtin__} module itself.  \code{__builtins__} can be set
+to a user-created dictionary to create a weak form of restricted
+execution\indexii{restricted}{execution}.
+
+\begin{notice}
+  Users should not touch \code{__builtins__}; it is strictly an
+  implementation detail.  Users wanting to override values in the
+  built-in namespace should \keyword{import} the \module{__builtin__}
+  (no `s') module and modify its attributes appropriately.
+\end{notice}
 
 The namespace for a module is automatically created the first time a
 module is imported.  The main module for a script is always called