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_val
和source_code
中同时添加Executor.run
语句,但是仍然无法正常工作。
Python 3.6.8