Python有一个很好的功能,可以提供对象的内容,就像它的所有方法和现有变量一样,称为dir()
。但是,当在函数中调用dir时,它只查看函数的范围。因此,在函数中调用dir()
与在一个函数外调用它具有不同的值。例如:
dir()
> ['__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__']
def d():
return dir()
d()
> []
有没有办法可以在d?
中更改dir的范围答案 0 :(得分:8)
dir()
没有参数默认为当前范围(locals()
的键,但已排序)。如果你想要一个不同的范围,你必须传入一个对象。来自documentation:
不带参数,返回当前本地范围内的名称列表。使用参数,尝试返回该对象的有效属性列表。
对于全球范围,请使用sorted(globals())
;它与在模块级别调用dir()
的结果完全相同。