Message323739
Thank you for the report, Xavier.
This is a duplicate of issue 22057.
PR 8812 clarifies the behavior when a dictionary without a "__builtins__" key is passed as *globals* to eval(). I think that makes the opposite case much easier to understand.
>>> eval("print(spam)", {'__builtins__': {'spam': 'eggs'}})
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 1, in <module>
NameError: name 'print' is not defined
>>> eval("print(spam)", {'__builtins__': {'spam': 'eggs', 'print': print}})
eggs
Also, I never needed to pass a dictionary with a "__builtins__" key to eval() before, so I don't think it's an important detail to document. |
|
| Date |
User |
Action |
Args |
| 2018-08-19 00:07:48 | berker.peksag | set | recipients:
+ berker.peksag, docs@python, martin.panter, eryksun, xcombelle, mdk |
| 2018-08-19 00:07:47 | berker.peksag | set | messageid: <[email protected]> |
| 2018-08-19 00:07:47 | berker.peksag | link | issue26363 messages |
| 2018-08-19 00:07:45 | berker.peksag | create | |
|