Fix SF # 641111, Undocumented side effect of eval

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.
This commit is contained in:
Neal Norwitz 2002-12-17 01:08:06 +00:00
parent e9ce25e512
commit 046b8a7244
1 changed files with 6 additions and 1 deletions

View 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.