上周一个朋友问我如何枚举或列出程序/函数/等中的所有变量。出于调试目的(本质上是获取所有内容的快照,以便您可以看到设置了哪些变量,或者根本没有设置它们)。我环顾四周,发现了使用Python的相对不错的方法:#!/ usr / bin / python foo1 =“ Hello world”foo2 =“ bar”foo3 = {“ 1”:“ a”, “ 2”:“ b”}foo4 =“ 1 + 1”对于dir()中的名称: myvalue = eval(名称) 打印名称,“是”,类型(名称),“和等于”,myvalue这将输出类似:__builtins__是<type'str'>,等于<module'__builtin __'(内置)>__doc__是<type'str'>,等于无__file__是<type'str'>,等于./foo.py__name__是<type'str'>,等于__main__foo1是<type'str'>,等于Hello worldfoo2是<type'str'>,等于barfoo3是<type'str'>,等于{'1':'a','2':'b'}foo4是<type'str'>,等于1 + 1到目前为止,我已经在PHP中找到了一种局部方式(由link text提供),但是它只列出了所有变量及其类型,而不列出内容:<?php//创建一些变量$ bar ='foo';$ foo ='bar';//创建一个新的数组对象$ arrayObj =新的ArrayObject(get_defined_vars());//遍历数组对象并回显变量和值for($ iterator = $ arrayObj-> getIterator(); $ iterator-> valid(); $ iterator-> next()) { echo $ iterator-> key()。'=>'。$ iterator-> current()。'<br />'; }?>因此,我向您介绍:如何用您喜欢的语言列出所有变量及其内容?VonC编辑:我建议这个问题遵循一点“ 代码挑战 ” 的精神。
3 回答
肥皂起泡泡
TA贡献1829条经验 获得超6个赞
在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'>}
莫回无
TA贡献1865条经验 获得超7个赞
在Lua中,基本数据结构是表,甚至全局环境_G都是表。因此,简单的枚举即可解决问题。
for k,v in pairs(_G) do
print(k..' is '..type(v)..' and is equal to '..tostring(v))
end
添加回答
举报
0/150
提交
取消