Python 的內置函數 dir() 是一個非常有用的工具,它用於返回指定對象的有效屬性列表。當不帶參數調用時,dir() 會返回當前局部作用域中的名稱列表;當帶參數調用時,它會嘗試返回該對象的有效屬性列表。
基本語法
dir([object])
- 可選參數
object:可以是模塊、類、實例或任何具有__dict__屬性的對象
主要功能
-
無參數調用:
- 返回當前局部作用域中的名稱列表
-
示例:
x = 1 print(dir()) # 會顯示包含 'x' 的名稱列表
-
有參數調用:
- 返回對象的屬性和方法列表
-
對於不同類型的對象,返回的內容會有所不同:
- 模塊對象:返回模塊定義的名稱
- 類對象:返回類屬性及其基類屬性
- 實例對象:返回實例屬性、類屬性和基類屬性
使用示例
-
查看模塊內容:
import math print(dir(math)) # 顯示 math 模塊的所有函數和常量 -
查看類成員:
class MyClass: def __init__(self): self.x = 1 def method(self): pass print(dir(MyClass)) # 顯示類屬性和方法 -
查看實例屬性:
obj = MyClass() print(dir(obj)) # 顯示實例屬性和可用的方法
注意事項
dir()的結果是動態的,會根據對象的當前狀態而變化- 結果列表是字母順序排序的
- 不是所有返回的名稱都是可以直接使用的屬性,有些可能是特殊方法或屬性
- 對於用户定義的對象,
dir()會調用對象的__dir__()方法(如果存在)
與 help() 的配合使用
dir() 通常與 help() 函數配合使用,先用 dir() 找到感興趣的屬性,然後用 help() 查看詳細文檔:
import os
print(dir(os)) # 查看 os 模塊的內容
help(os.path) # 查看 os.path 的具體幫助
應用場景
- 交互式探索:在 Python shell 或 IPython 中快速查看對象結構
- 調試:檢查對象是否具有預期的屬性
- 元編程:動態獲取和操作對象屬性
- 學習新模塊:快速瞭解模塊提供的功能
dir() 是 Python 自省(introspection)功能的重要組成部分,為開發者提供了強大的對象探索能力。