def __init__(self, f_code, f_closure, f_globals, f_locals):
self.f_code = f_code
self.f_globals = f_globals
self.f_locals = f_locals
self.f_builtins = f_globals.get('__builtins__')
if isinstance(self.f_builtins, types.ModuleType):
self.f_builtins = self.f_builtins.__dict__
if self.f_builtins is None:
self.f_builtins = {'None': None}
self.stack = []
self.f_lineno = f_code.co_firstlineno # XXX doesn't get updated
self.f_lasti = 0
self.cells = {} if f_code.co_cellvars or f_code.co_freevars else None
for var in f_code.co_cellvars:
self.cells[var] = Cell(self.f_locals.get(var))
if f_code.co_freevars:
assert len(f_code.co_freevars) == len(f_closure)
self.cells.update(zip(f_code.co_freevars, f_closure))
评论列表
文章目录