对Python交互会话中所有已定义对象的引用
在Python交互式解释器会话中使用对Python交互会话中所有已定义对象的引用,python,Python,在Python交互式解释器会话中使用dir()。例如,键入此代码后键入dir(): import math a = 4 b = math.sqrt(a) 产生这个输出 ['__builtins__', '__doc__', '__name__', '__package__', 'a', 'b', 'math'] a、b和math在此列表中以字符串形式出现。有没有办法获取引用列表而不是字符串列表?既然这些是全局变量,那么: globals().values() 在Python 3中,这是
dir()。例如,键入此代码后键入dir()
:
import math
a = 4
b = math.sqrt(a)
产生这个输出
['__builtins__', '__doc__', '__name__', '__package__', 'a', 'b', 'math']
a
、b
和math
在此列表中以字符串形式出现。有没有办法获取引用列表而不是字符串列表?既然这些是全局变量,那么:
globals().values()
在Python 3中,这是一个视图,而不是列表,因此:
list(globals().values())
这不是“所有定义的对象”。“绑定到\uuuu main\uuuu
命名空间中的名称的所有对象”。毕竟,它不包括math.sqrt
或None
,这些对象是定义的。事实上,它甚至不是“所有对象都绑定到…”,它实际上只是“所有名称都在…”;尝试c=a
,您将获得另一个条目,但没有额外定义的对象。它实际上是locals()
,相当于dir()
,而不是globals()
。或者,更好的是,vars()
(因为vars(spam)
也相当于dir(spam)
。当然,在顶层,局部变量和全局变量是一样的,所以没有太大区别…