evaluation question
Ben Bacarisse
ben.usenet at bsb.me.uk
Fri Jan 27 16:04:58 EST 2023
Muttley at dastardlyhq.com writes:
> Hi
It looks like you posted this question via Usenet. comp.lang.python is
essentially dead as a Usenet group. It exists, and gets NNTP versions
of mail sent to the mailing list, but nothing posted to the group via
NNTP get send on the mailing list. I prefer Usenet and dislike mailing
lists but that just means I can't really contribute to this "group"
The "python-list" an an excellent resource (if you like the email
interface) and you can subscribe here:
https://mail.python.org/mailman/listinfo/python-list>,
> This is probably a dumb newbie question but I've just started to learn
> python3 and eval() isn't behaving as I'd expect in that it works for
> some things and not others. eg:
>
>>>> eval("1+1")
> 2
>>>> eval("print(123)")
> 123
>>>> eval("for i in range(1,10): i")
> Traceback (most recent call last):
> File "<stdin>", line 1, in <module>
> File "<string>", line 1
> for i in range(1,10): i
> ^
> SyntaxError: invalid syntax
>
> Why did the 3rd one fail? Does it not handle complex expressions?
It handles only expressions, and "for i in range(1,10): i" is not an
expression. You can use
>>> exec("for i in range(1,10): i")
or, to confirm that something is happening:
>>> exec("for i in range(1,10): print(i)")
1
2
3
4
5
6
7
8
9
See: https://docs.python.org/3/library/functions.html?highlight=eval#eval
and the immediately following entry.
--
Ben.
More information about the Python-list
mailing list