eval SyntaxError: invalid syntax in python

匿名 (未验证) 提交于 2019-12-03 02:46:02

问题:

I want to assign :

x0='123'     x1='123'     x2='123'     x3='123'     x4='123'     x5='123'     x6='123'     x7='123'     x8='123'     x9='123'     

I write the code to express that i can get the output of a string 123 when input x1 or x8 .

for i in range(0,10):     eval("x"+str(i)+"='123'")  Traceback (most recent call last): File "", line 2, in  File "", line 1   x0='123'   ^ SyntaxError: invalid syntax 

How i can do that way?

回答1:

For dynamic execution of statements use exec statement.

>>> exec('y=3') >>> y 3 

Eval Usgae:eval(expression)

The expression argument is parsed and evaluated as a Python expression

eg:

>>> s=3 >>> eval('s==3') True >>> eval('s + 1') 4 >>> eval('s') 3 >>> eval('str(s)+"test"') '3test' 


回答2:

eval() only allows for expressions. Assignment is not an expression but a statement; you'd have to use exec instead.

Even then you could use the globals() dictionary to add names to the global namespace and you'd not need to use any arbitrary expression execution.

You really don't want to do this, you need to keep data out of your variable names and use a list or dictionary instead:

x = ['123'] * 10 

would give you a list you can address as x[0], x[1], etc. without having to execute arbitrary expressions.



回答3:

You can you this expression.

eval('"x"+str(i)+"="+"123"') 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!