猿问

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

上周一个朋友问我如何枚举或列出程序/函数/等中的所有变量。出于调试目的(本质上是获取所有内容的快照,以便您可以看到设置了哪些变量,或者根本没有设置它们)。我环顾四周,发现了使用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 world

foo2是<type'str'>,等于bar

foo3是<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编辑:我建议这个问题遵循一点“ 代码挑战 ” 的精神。


拉丁的传说
浏览 323回答 3
3回答

肥皂起泡泡

在python中,使用locals返回包含所有本地绑定的字典,因此避免了eval:>>> foo1 = "Hello world">>> foo2 = "bar">>> foo3 = {"1":"a",...&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"2":"b"}>>> foo4 = "1+1">>> import pprint>>> pprint.pprint(locals()){'__builtins__': <module '__builtin__' (built-in)>,&nbsp;'__doc__': None,&nbsp;'__name__': '__main__',&nbsp;'foo1': 'Hello world',&nbsp;'foo2': 'bar',&nbsp;'foo3': {'1': 'a', '2': 'b'},&nbsp;'foo4': '1+1',&nbsp;'pprint': <module 'pprint' from '/usr/lib/python2.5/pprint.pyc'>}

莫回无

在Lua中,基本数据结构是表,甚至全局环境_G都是表。因此,简单的枚举即可解决问题。for k,v in pairs(_G) do&nbsp; print(k..' is '..type(v)..' and is equal to '..tostring(v))end
随时随地看视频慕课网APP

相关分类

Python
我要回答