即使给出正确的代码,eval也会出现语法错误

rob*_*ntw 7 python 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]))
Run Code Online (Sandbox Code Playgroud)

但是,当我运行它时,我收到以下错误:

eval("%s = values[%d]" % (details[2], details[1]))
  File "<string>", line 1
    self.solar_z = values[1]
                 ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

为什么是这样?self.solar_z已定义,并且eval'd语句看起来正确.

Nik*_*s R 10

改为使用exec,它会对语句进行评估.

exec "self.solar_z = values[1]" in locals(), locals()


Ign*_*ams 7

eval()评估表达式.Python中的赋值是一种陈述.这不行.