eval 语法错误,即使提供了正确代码

7 投票
2 回答
4327 浏览
提问于 2025-04-16 19:55

我有以下这段代码,它使用了 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()

撰写回答