exec()为类方法范围变量分配一个新值

时间:2019-06-12 03:52:05

标签: python python-3.x

source_code = '''
def fn():
    print('source code executed')
    return 100
exec_val = fn()
'''


class Executor:

    @classmethod
    def run(cls, code):
        exec_val = 0
        exec(code)
        return exec_val


if __name__ == '__main__':
    print(Executor.run(source_code))

>>> source code executed
>>> 0

上面的代码的结果是0,这与我预期的100不一致。
我已经尝试在global exec_valsource_code中同时添加Executor.run语句,但是仍然无法正常工作。

Python 3.6.8

0 个答案:

没有答案