2015-01-13 80 views
3

Python有一個很好的特性,它提供了一個對象的內容,像所有的方法和現有變量一樣,被稱爲dir()。但是,當在函數中調用dir時,它只會查看函數的作用域。因此,在一個函數中調用dir()具有與調用它之外的值不同的值。例如:dir函數內部

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

有沒有辦法可以改變dir中dir的範圍?

回答

7

dir()無參數默認爲當前作用域(鍵爲locals(),但已排序)。如果你想要一個不同的範圍,你必須傳入一個對象。來自documentation

沒有參數,返回當前本地作用域中的名稱列表。使用參數嘗試返回該對象的有效屬性列表。

在全球範圍內,請使用sorted(globals());這與模塊級調用dir()的結果完全相同。