在python中调用dir()

时间:2011-11-13 02:04:16

标签: python

问题:当我在python解释器中调用dir()时,正在查询什么是对象?


的信息: 我正在玩一个我希望能够从全局字典中提取函数名称的包。我认为它会是dir(__ global),但那不是它。也不是dir(sys.modules)。我真的不确定它是什么。如果我跳转到命令行并输入dir()进入一个新的解释器会话,它会给我['__builtins__', '__doc__', '__name__', '__package__']什么是dir(ob)中的ob会给我同样的回报。

3 个答案:

答案 0 :(得分:3)

dir()返回当前范围中的名称。我现在不记得它是否完全等同于locals().keys(),或者是否存在任何差异。

答案 1 :(得分:0)

dir()默认为当前范围(例如,您可以直接从解释器命令行引用的内容)。例如:

>>> dir()
['__builtins__', '__doc__', '__name__', '__package__']
>>> foo = 123
>>> dir()
['__builtins__', '__doc__', '__name__', '__package__', 'foo']

答案 2 :(得分:0)

dir()方法调用复杂和深度操作来尝试预测您查询的对象上可能存在哪些属性 - 但是在它无法实际尝试访问它找到的属性名称以查看它们是否存在的障碍下运行会不会返回AttributeError。我知道,这个答案比你现在想的更详细;但对于那些可能在以后遇到更复杂的需求而偶然发现这个问题的人来说,Michael Food的博客文章详细介绍了一些魔术:

http://www.voidspace.org.uk/python/weblog/arch_d7_2011_05_21.shtml?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed:+voidspace+(The+Voidspace+Techie+Blog)#e1212