是否有任何语言(或调试工具)具有内置函数或方法来打印作用域链?

发布于 2024-08-31 16:28:07 字数 47 浏览 4 评论 0原文

有没有语言或调试工具有办法打印出作用域链来检查,以便查看作用域链包含的不同情况?

Does any language or debug tool have a way to print out the scope chain for examination, so as to look at the different situations of what a scope chain contains?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

过期以后 2024-09-07 16:28:07

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 实际上是封闭的。

Firebug does for JavaScript. On the ‘Watch’ tab of the ‘Script’ debugger you can open up the scope chain list a look at each parent scope.

Python can read locals from a parent scope in the language itself if you grab a code object, but the way it handles nested scopes means that only the scoped variables that are actually used are bound:

>>> 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

Though both v1 and v2 are defined in the parent scope, only v1 is actually closed over.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文