exec()之后locals()的奇怪行为

时间:2019-08-03 09:35:28

标签: python

我有一个函数,该函数接受带有某些定义的源代码的字符串,exec将其定义-然后从locals()获取新的定义。

def do_exec(code):
    exec(code)
    print(locals()['x'])

do_exec('x = 5')

这按预期工作。

但是,当我尝试这样做时:

def do_exec_2(code):
    exec(code)
    x = locals()['x']
    print(x)


do_exec_2('x = 5')

我得到一个错误:

KeyError: 'x'

那是为什么?

0 个答案:

没有答案