在取得了最初的成功之后
sys.settrace(),我最终切换到了
ast模块(抽象语法树)。我解析要分析的代码,然后在每次分配后插入新的调用,以报告变量名称及其新值。我还插入调用以报告循环迭代和函数调用。然后我执行修改后的树。
tree = parse(source) visitor = TraceAssignments() new_tree = visitor.visit(tree) fix_missing_locations(new_tree) pre = compile(new_tree, PSEUDO_FILENAME, 'exec') self.environment[CONTEXT_NAME] = builder exec pre in self.environment
我正在使用像Bret
Victor’s这样的实时编码工具,并且您可以在GitHub上查看我的工作代码,以及有关其在测试中的行为的一些示例。您还可以从项目页面上找到演示视频,教程和下载的链接。



