【发布时间】:2011-02-15 06:01:25
【问题描述】:
是否有任何语言或调试工具可以打印出作用域链进行检查,从而查看作用域链包含的不同情况?
【问题讨论】:
-
我很想看到这样的工具;也许有人想出了一个 DXCore 插件来做到这一点。
标签: scope closures scope-chain
是否有任何语言或调试工具可以打印出作用域链进行检查,从而查看作用域链包含的不同情况?
【问题讨论】:
标签: scope closures scope-chain
Firebug 适用于 JavaScript。在“脚本”调试器的“观察”选项卡上,您可以打开作用域链列表查看每个父作用域。
如果你抓取一个代码对象,Python 可以从语言本身的父作用域读取本地变量,但它处理嵌套作用域的方式意味着只有实际使用的作用域变量被绑定:
>>> def a():
... def b():
... print v1
... v1= 1
... v2= 2
... return b
>>> f= a()
>>> f.func_code.co_freevars
('v1',)
>>> f.func_closure
(<cell at 0x7fb601274da8: int object at ...>,)
>>> f.func_closure[0].cell_contents
1
虽然v1 和v2 都定义在父作用域中,但实际上只有v1 被关闭了。
【讨论】: