eval modifies passed dict

Janto Dreijer jantod at gmail.com
Mon Apr 14 11:23:25 EDT 2008


It seems eval is modifying the passed in locals/globals. This is
behaviour I did not expect and is really messing up my web.py app.

Python 2.5.1 (r251:54863, Mar  7 2008, 04:10:12)
[GCC 4.1.3 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> d = dict(a=1)
>>> d.keys()
['a']
>>> eval("a", d)
1
>>> d.keys()
['a', '__builtins__']

That can't be right.

Regards
Janto



More information about the Python-list mailing list