考虑其中function1
在其本地范围内定义了x
的Python代码。我想知道是否有可能编写go_up_stack_and_find("x")
,使其通过中间作用域进入堆栈,并在这些作用域的locals()中找到“ x”:
def function1():
x = 1
function2()
def function2():
go_up_stack_and_find("x")
我了解Python的范围规则(本地和全局),并且了解通常无法使用中间范围。但是是否有可能(例如通过stacktrace)以编程方式向上堆栈,检查locals()并从该深度返回值?我知道调试器是可能的。