]> granicus.if.org Git - python/commitdiff
Fix SF # 641111, Undocumented side effect of eval
authorNeal Norwitz <nnorwitz@gmail.com>
Tue, 17 Dec 2002 01:08:06 +0000 (01:08 +0000)
committerNeal Norwitz <nnorwitz@gmail.com>
Tue, 17 Dec 2002 01:08:06 +0000 (01:08 +0000)
Try to clear up confusion about the current globals being copied
into a globals dict passed to eval().  This wording (more or less)
was suggested in bug report.  It should probably be made clearer.

Backport candidate.

Doc/lib/libfuncs.tex

index d29155dfddf60c419f1fd8b10ee6605f42d0bf53..ea48539993dd18f8e51ae413f3d9865404ed5d46 100644 (file)
@@ -314,7 +314,12 @@ class C:
   \var{expression} argument is parsed and evaluated as a Python
   expression (technically speaking, a condition list) using the
   \var{globals} and \var{locals} dictionaries as global and local name
-  space.  If the \var{locals} dictionary is omitted it defaults to
+  space.  If the \var{globals} dictionary is present and lacks
+  '__builtins__', the current globals are copied into \var{globals} before
+  \var{expression} is parsed.  This means that \var{expression}
+  normally has full access to the standard
+  \refmodule[builtin]{__builtin__} module and restricted environments
+  are propagated.  If the \var{locals} dictionary is omitted it defaults to
   the \var{globals} dictionary.  If both dictionaries are omitted, the
   expression is executed in the environment where \keyword{eval} is
   called.  The return value is the result of the evaluated expression.