simple eval question

Gerhard Häring gh_pythonlist at
Fri Nov 2 20:59:01 CET 2001

On Fri, Nov 02, 2001 at 12:41:28PM -0800, N Becker wrote:
> What is wrong with this?
> eval ("print \"hello\"')
> Traceback (most recent call last):
>   File "<stdin>", line 1, in ?
>   File "<string>", line 1
>     print "hello"
>         ^
> SyntaxError: invalid syntax
> I expected that eval takes a string an evaluates it as input to the
> interpreter, as if it had been typed into the command line.  Was I
> wrong?

You were almost right. eval() takes an expression, while exec() takes
statements. print is a statement, not an expression, so you need exec()

mail:   gerhard <at> bigfoot <dot> de       registered Linux user #64239
web:    OpenPGP public key id 86AB43C0
public key fingerprint: DEC1 1D02 5743 1159 CD20  A4B6 7B22 6575 86AB 43C0
reduce(lambda x,y:x+y,map(lambda x:chr(ord(x)^42),tuple('zS^BED\nX_FOY\x0b')))

More information about the Python-list mailing list