【问题标题】:Does any language (or debugging tool) have a build in function or method to print out the scope chains?是否有任何语言(或调试工具)具有内置函数或方法来打印范围链?
【发布时间】:2011-02-15 06:01:25
【问题描述】:

是否有任何语言或调试工具可以打印出作用域链进行检查,从而查看作用域链包含的不同情况?

【问题讨论】:

  • 我很想看到这样的工具;也许有人想出了一个 DXCore 插件来做到这一点。

标签: scope closures scope-chain


【解决方案1】:

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

虽然v1v2 都定义在父作用域中,但实际上只有v1 被关闭了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-20
    • 2012-12-24
    • 1970-01-01
    • 2015-09-10
    • 1970-01-01
    • 2011-09-30
    • 2013-03-12
    相关资源
    最近更新 更多