eval SyntaxError:python中的语法无效

时间:2014-03-21 12:18:06

标签: python

我想分配:

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

我编写代码表示我可以在输入123x1时获得字符串x8的输出。

for i in range(0,10):
    eval("x"+str(i)+"='123'")

Traceback (most recent call last):
File "<stdin>", line 2, in <module>
File "<string>", line 1
  x0='123'
  ^
SyntaxError: invalid syntax

我怎么能这样做?

3 个答案:

答案 0 :(得分:17)

eval()仅允许表达式。作业不是表达,而是声明;你必须改为使用exec

即使这样,您也可以使用globals()字典向全局命名空间添加名称,而不需要使用任意表达式执行。

真的不想这样做,你需要keep data out of your variable names并改为使用列表或词典:

x = ['123'] * 10

会为您提供一个列表,您可以将其设置为x[0]x[1]等,而无需执行任意表达式。

答案 1 :(得分:11)

对于语句的动态执行,请使用exec语句。

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

Eval Usgae:eval(expression)

expression参数被解析并评估为Python表达式

例如:

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

答案 2 :(得分:-1)

你可以这样表达。

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