我正在尝试存储已在 exec() 函数内部运行的代码中读取或写入的变量,但我不知道执行此操作的最佳方法是什么。
我能想到的唯一方法是做这样的事情:
class newDict(dict):
def __init__(self, *args):
dict.__init__(self, args)
self.accessed_variables = set()
def __getitem__(self, key):
val = dict.__getitem__(self, key)
self.accessed_variables.add(key)
return val
def __setitem__(self, key, value):
self.accessed_variables.add(key)
dict.__setitem__(self, key,value)
def get_variables(self):
return self.accessed_variables
local_env = newDict()
global_env = newDict()
code = """ """
exec(code, global_env, local_env)
print(local_env.get_variables)