eval 语法错误,即使提供了正确代码
我有以下这段代码,它使用了 eval
函数:
lines = self.fulltext.splitlines()
CURRENT = 0
extractors = { "solar zenith angle" : (CURRENT, 1, "self.solar_z"),
"ground pressure" : (CURRENT, 2, "self.ground_pressure")
}
print locals()
for line in lines:
for label, details in extractors.iteritems():
if label in line:
if details[0] == CURRENT:
values = line.split()
eval("%s = values[%d]" % (details[2], details[1]))
但是,当我运行它的时候,出现了以下错误:
eval("%s = values[%d]" % (details[2], details[1]))
File "<string>", line 1
self.solar_z = values[1]
^
SyntaxError: invalid syntax
这是为什么呢? self.solar_z
是已经定义过的,而且被 eval
执行的语句看起来也没问题。
2 个回答
7
eval()
是用来计算表达式的。可是,在Python中,赋值是一个语句。这种写法是行不通的。
10
可以使用 exec 这个命令,它可以执行语句。
exec "self.solar_z = values[1]" in locals(), locals()