Brian van den Broek said unto the world upon 2004-12-04 04:28:
Marilyn Davis said unto the world upon 2004-12-04 01:37:

Hello Tutors,

I'm having trouble understanding the difference between eval and exec.

Can anyone explain it to me please?

Marilyn Davis


Hi Marilyn,

does this help?

<SNIP>

Darn. I left a few things that might help:

exec("a = 2 + 40")
exec("print a")

42

>>> eval('a')
42
>>>

As before, exec("a = 2 + 40") runs the code "a = 2 + 40", making 'a' point to 42.
Thus, exec("print a") is synonymous with:
>>> print a


*in the interpreter* "eval('a')" also gives 42. This is because, *in the interpreter*
>>> a
42


But, run this script:

exec('a=42')
exec('print a')
exec("print eval('a') == eval('21 * 2')")
eval('a')
a

OUTPUT:
>>> =========================== RESTART ===========================
>>>
42
True
>>>

*In a script*,
a
doesn't produce any output at all. This script does print 'True' because of the third line. It reads:


Run the sting "print eval('a') == eval('21 * 2')" as code.

So, print the expression you get by putting an '==' between the results of evaluating the expressions "a" and "21 * 2". Thus, print an expression equivalent to
42 == 42.


And its almost 5am and I've begun to worry I'm muddying the waters, rather than helping. It is to be hoped that someone will clean up any messes I have made. (Ken? Danny? . . . .)

Best,

brian vdB

_______________________________________________
Tutor maillist  -  [EMAIL PROTECTED]
http://mail.python.org/mailman/listinfo/tutor

Reply via email to