dir里面的功能

时间:2015-01-13 21:08:54

标签: python scope

Python有一个很好的功能,可以提供对象的内容,就像它的所有方法和现有变量一样,称为dir()。但是,当在函数中调用dir时,它只查看函数的范围。因此,在函数中调用dir()与在一个函数外调用它具有不同的值。例如:

dir()
> ['__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__']
def d():
  return dir()
d()
> []

有没有办法可以在d?

中更改dir的范围

1 个答案:

答案 0 :(得分:8)

dir() 没有参数默认为当前范围(locals()的键,但已排序)。如果你想要一个不同的范围,你必须传入一个对象。来自documentation

  

不带参数,返回当前本地范围内的名称列表。使用参数,尝试返回该对象的有效属性列表。

对于全球范围,请使用sorted(globals());它与在模块级别调用dir()的结果完全相同。