调试 – 枚举或列出程序中的所有变量[您最喜欢的语言在这里]

一个朋友上周问我如何枚举或列出程序/函数/等中的所有变量。为了调试(基本上获得一切的快照,所以你可以看到什么变量设置,或者如果他们被设置)。我环顾一下,发现了一个比较好的Python方法:

#!/usr/bin/python                                                                                                                                                                                                                           
foo1 = "Hello world"
foo2 = "bar"
foo3 = {"1":"a",
        "2":"b"}
foo4 = "1+1"

for name in dir():
    myvalue = eval(name)
    print name, "is", type(name), "and is equal to ", myvalue

这将输出像:

__builtins__ is <type 'str'> and is equal to  <module '__builtin__' (built-in)>
__doc__ is <type 'str'> and is equal to  None
__file__ is <type 'str'> and is equal to  ./foo.py
__name__ is <type 'str'> and is equal to  __main__
foo1 is <type 'str'> and is equal to  Hello world
foo2 is <type 'str'> and is equal to  bar
foo3 is <type 'str'> and is equal to  {'1': 'a', '2': 'b'}
foo4 is <type 'str'> and is equal to  1+1

我到目前为止发现了一个部分的方式在PHP(感谢link text),但它只列出所有的变量和它们的类型,而不是内容:

<?php
// create a few variables
$bar = 'foo';
$foo ='bar';
// create a new array object
$arrayObj = new ArrayObject(get_defined_vars());
// loop over the array object and echo variables and values
for($iterator = $arrayObj->getIterator(); $iterator->valid(); $iterator->next())
        {
        echo $iterator->key() . ' => ' . $iterator->current() . '<br />';
        }
?>

所以我把它给你:你如何列出所有的变量和它们的内容在你最喜欢的语言?

编辑VonC:我提出这个问题遵循一点点“code-challenge”的精神。
如果您不同意,只需编辑和删除标记和链接。

在python中,使用返回包含所有本地绑定的字典的locals,从而避免eval:

>>> foo1 = "Hello world"
>>> foo2 = "bar"
>>> foo3 = {"1":"a",
...         "2":"b"}
>>> foo4 = "1+1"

>>> import pprint
>>> pprint.pprint(locals())
{'__builtins__': <module '__builtin__' (built-in)>,
 '__doc__': None,
 '__name__': '__main__',
 'foo1': 'Hello world',
 'foo2': 'bar',
 'foo3': {'1': 'a', '2': 'b'},
 'foo4': '1+1',
 'pprint': <module 'pprint' from '/usr/lib/python2.5/pprint.pyc'>}
http://stackoverflow.com/questions/430811/enumerate-or-list-all-variables-in-a-program-of-your-favorite-language-here

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:调试 – 枚举或列出程序中的所有变量[您最喜欢的语言在这里]