qq_花开花谢_0
正如RedBlueThing和模拟所说:dir() 给出范围变量的列表globals() 给出全局变量的字典locals() 给出了局部变量的字典使用交互式shell(版本2.6.9),创建变量后a = 1和b = 2,运行dir()给['__builtins__', '__doc__', '__name__', '__package__', 'a', 'b']跑步locals()给{'a': 1, 'b': 2, '__builtins__': , '__package__': None, '__name__': '__main__', '__doc__': None}Running globals()给出的答案与locals()本例完全相同。我没有进入任何模块,因此所有变量都可用作本地和全局变量。 locals()并globals()列出变量的值以及名称; dir()只列出名称。如果我导入模块并运行locals()或globals()在模块内部,dir()仍然只提供少量变量; 它增加__file__了上面列出的变量。locals()并globals()列出相同的变量,但在打印出字典值的过程中__builtin__,它列出了更多的变量:内置函数,异常和类型如“ 'type': ”,而不仅仅是如上所示的简要。有关更多信息,dir()请参阅New Mexico Tech的Python 2.7快速参考或ibiblio.org 的dir()函数。有关详细信息locals(),globals()请参阅Dive Into Python中的locals和globals以及有关New Mexico Tech的全局变量的页面。[评论:@Kurt:你给了一个枚举或列表所有变量的链接,这是你最喜欢的语言 -但这个答案有错误。问题在于: type(name)在那个例子中总会返回。您确实得到了一个变量列表,它们回答了问题,但旁边列出的类型不正确。这在你的例子中并不明显,因为无论如何所有的变量都是字符串; 然而,它返回的是变量名称的类型而不是变量的类型。解决这个问题:而不是print type(name)使用print eval('type(' + name + ')')。我为在答案部分发表评论而道歉,但我没有评论发布权限,另一个问题已经关闭。