Python 中的內建物件(builtins)
每次啟動 Python 直譯器時,都會自動載入 builtins 模組,無論是作為頂級執行環境還是作為互動式會話。作為所有 Python 物件的基類的 Object 類在此模組中定義。所有內建資料型別類(如數字、字串、列表等)都在此模組中定義。它還定義了 BaseException 類及所有內建異常。此外,所有內建函式也在 built-ins 模組中定義。
由於此模組會自動匯入到當前會話中,通常不會對其進行顯式匯入。所有在可執行程式碼中使用的內建函式都被預設認為來自 built-ins 模組。例如
>>> len('hello') 5
與以下命令隱含等價
>>> import builtins >>> builtins.len('hello') 5
然而,當存在與內建函式同名的使用者自定義函式時,需要顯式匯入該函式。Python 直譯器給予使用者自定義函式更高的優先順序。因此,如果程式碼同時包含使用者自定義函式和同名內建函式,則後者必須以內建模組為字首。
def len(string): print ('local len() function') print ('calling len() function in builtins module') import builtins l = builtins.len(string) print ('length:',l) string = "Hello World" len(string)
輸出
local len() function calling len() function in builtins module length: 11
大多數模組都有以 __builtins__ 命名的部分,作為其全域性部分提供。 __builtins__ 的值通常是該模組或該模組的 __dict__ 屬性值。
>>> import math >>> globals() {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, 'math': <module 'math' (built-in)>}
廣告