A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://mail.python.org/pipermail/python-dev/2004-May/044683.html below:

[Python-Dev] Passing compile(...,'exec') code to 'eval'

[Python-Dev] Passing compile(...,'exec') code to 'eval'Brett C. bac at OCF.Berkeley.EDU
Wed May 5 14:23:16 EDT 2004
In preparations for my coding my thesis I have been trying to figure out 
how a local variable could be assigned to without me explicitly knowing 
during compilation.  Obviously 'exec' can.  But I wasn't sure about 'eval'.

Reading the docs, I didn't think it could since 'eval', when taking a 
string, only evaluates expressions.  But what about code objects?  The 
docs say, "The code object must have been  compiled passing 'eval' as 
the kind argument".  But I didn't read that when I started testing.

This is when I discovered you *can* pass in something using 'compile' 
with the kind argument of "exec"::

 >>> x
Traceback (most recent call last):
   File "<stdin>", line 1, in ?
NameError: name 'x' is not defined
[16425 refs]
 >>> eval(compile("x = 1", "<string>", "exec"))
[16426 refs]
 >>> x
1

Is this a bug, or are the docs wrong?  I am hoping it is the former 
since if it is the latter my thesis just got a big caveat pasted into it 
about how 'eval' can cause problems and invalidate the type inferencing 
in irreparable ways.

-Brett

More information about the Python-Dev mailing list

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4