我想NameError
通过将所需的缺失变量注入到帧中来处理异常,然后从上一次尝试的指令继续执行.
以下伪代码应说明我的需求.
def function(): return missing_var try: print function() except NameError: frame = inspect.trace()[-1][0] # inject missing variable frame.f_globals["missing_var"] = ... # continue frame execution from last attempted instruction exec frame.f_code from frame.f_lasti
在repl.it上阅读整个unittest
正如ivan_pozdeev在他的回答中指出的那样,这被称为恢复.
进一步的研究之后,我发现Veedrac的回答这个问题使用自定义sys.excepthook异常之前的背景下,行号恢复计划发表lc2817非常有趣.它依赖于Richie Hindle的作品.
代码在从属进程中运行,该进程由父进程控制.任务(真正的功能)写在父级中,后者使用dill传递给从站.我希望一些任务(在slave进程中运行)尝试从父进程中的外部作用域访问变量,我希望slave能够动态地向父进程请求这些变量.
ps:我不希望这种魔法在生产环境中运行.