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)>}

更新日期: 2020 年 6 月 27 日

2 千次瀏覽

開啟您的 職業生涯

完成課程即可獲得認證

開始學習
廣告