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