eval SyntaxError:python中的语法无效

2024-09-29 01:31:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我想分配:

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

我编写代码是为了表示在输入x1x8时可以获得字符串123的输出。

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

我怎么能那样做?


Tags: 字符串代码inlinefilex1x2x3
3条回答

你可以这样表达。

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

eval()只允许表达式。赋值不是表达式,而是语句;您必须使用exec

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

如果您确实不想这样做,您需要keep data out of your variable names并使用列表或字典来代替:

x = ['123'] * 10

会给您一个列表,您可以将其命名为x[0]x[1],等等,而不必执行任意表达式。

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

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

评估用途:eval(expression)

expression参数作为Python表达式进行分析和计算

例如:

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

相关问题 更多 >