On 28/01/2023 05.37, mutt...@dastardlyhq.com wrote:
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?

eval() is very powerful, and therefore rather dangerous in the risks it presents.

Thus, seems a strange/advanced question for a "newbie" to be asking. YMMV!

Do you know about the Python REPL?

If you open python within a terminal, each of the three expressions/compound-statements listed will work, as desired, without eval().

dn $ ... python
Python 3.11.1 (main, Jan 6 2023, 00:00:00) [GCC 12.2.1 20221121 (Red Hat 12.2.1-4)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 1+1
2
>>> print( 123 )
123
>>> for i in range( 1, 10 ): i
...
1
2
3
4
5
6
7
8
9
>>> exit()

--
Regards,
=dn
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to