首页 > 解决方案 > exec() 为类方法范围变量分配一个新值

问题描述

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的。
我已经尝试在and中添加global exec_val语句,但仍然无法正常工作。source_codeExecutor.run

Python 3.6.8

标签: pythonpython-3.x

解决方案


推荐阅读