內建函式¶
Python 直譯器有內建多個可隨時使用的函式和型別。以下按照英文字母排序列出。
內建函式 |
|||
|---|---|---|---|
- aiter(async_iterable, /)¶
回傳 非同步疊代器 做為 非同步可疊代物件。相當於呼叫 x.__aiter__()。
注意:與
iter()不同,aiter()沒有兩個引數的變體。在 3.10 版被加入.
- all(iterable, /)¶
如果 iterable 的所有元素皆為真(或 iterable 為空)則回傳
True。等價於:def all(iterable): for element in iterable: if not element: return False return True
- awaitable anext(async_iterator, /)¶
- awaitable anext(async_iterator, default, /)
當進入 await 時,從給定的 asynchronous iterator 中回傳下一個項目(item),疊代完畢則回傳 default 。
這是內建函式
next()的非同步版本,其行為類似於:呼叫 async_iterator 的
__anext__()方法,回傳 awaitable。等待回傳疊代器的下一個值。如果指定 default,當疊代器結束時會回傳該值,否則會引發StopAsyncIteration。在 3.10 版被加入.
- any(iterable, /)¶
如果 iterable 的任一元素為真,回傳
True。如果 iterable 是空的,則回傳False。等價於:def any(iterable): for element in iterable: if element: return True return False
- ascii(object, /)¶
就像函式
repr(),回傳一個表示物件的字串,但是repr()回傳的字串中非 ASCII 編碼的字元會被跳脫 (escape),像是\x、\u和\U。這個函式生成的字串和 Python 2 的repr()回傳的結果相似。
- bin(integer, /)¶
將一個整數轉變為一個前綴為 "0b" 的二進位制字串。結果是一個有效的 Python 運算式。如果 integer 不是 Python 的
int物件,那它需要定義__index__()method 回傳一個整數。舉例來說:>>> bin(3) '0b11' >>> bin(-10) '-0b1010'
如果不一定需要 "0b" 前綴,還可以使用如下的方法。
>>> format(14, '#b'), format(14, 'b') ('0b1110', '1110') >>> f'{14:#b}', f'{14:b}' ('0b1110', '1110')
也請參閱
enum.bin()以二補數表示負數。可參考
format()取得更多資訊。
- class bool(object=False, /)¶
回傳一個布林值,即
True或者False。引數會使用標準的真值測試程序來轉換。如果引數為假或者被省略,則回傳False;其他情況回傳True。boolclass(類別)是int的 subclass(子類別)(參見 數值型別 --- int、float、complex),其他 class 不能繼承自它。它只有False和True兩個實例(參見 Boolean 型別 - bool)。在 3.7 版的變更: 現在為僅限位置參數。
- breakpoint(*args, **kws)¶
這個函式將呼叫
sys.breakpointhook()函式,並將args和kws傳遞給它。這將有效地讓你在特定的呼叫點進入除錯器。預設情況下,sys.breakpointhook()呼叫pdb.set_trace()不須帶任何引數。這樣的設計是為了方便使用者,讓他們不需要額外地導入pdb模組或輸入太多程式就可以進入除錯器。然而,可以將sys.breakpointhook()設置為其他函式,並且breakpoint()將自動呼叫該函式,讓你進入所選擇的除錯器。如果無法存取sys.breakpointhook()這個函式,則此函式將引發RuntimeError。預設情況下,
breakpoint()的行為可以透過PYTHONBREAKPOINT環境變數來更改。有關使用詳情,請參考sys.breakpointhook()。請注意,如果
sys.breakpointhook()被替換了,則無法保證此功能。引發一個附帶引數
breakpointhook的稽核事件builtins.breakpoint。在 3.7 版被加入.
- class bytearray(source=b'')
- class bytearray(source, encoding, errors='strict')
回傳一個新的 bytes 陣列。
bytearrayclass 是一個可變的整數序列,包含範圍為 0 <= x < 256 的整數。它有可變序列大部分常見的 method(如在 可變序列型別 中所述),同時也有bytes型別大部分的 method,參見 Bytes 和 Bytearray 的操作。選擇性參數 source 可以被用來以不同的方式初始化陣列:
如果是一個 string,你必須提供 encoding 參數(以及選擇性地提供 errors );
bytearray()會使用str.encode()method 來將 string 轉變成 bytes。如果是一個 integer,陣列則會有該數值的長度,並以 null bytes 來當作初始值。
如果是一個符合 buffer 介面的物件,該物件的唯讀 buffer 會被用來初始化 bytes 陣列。
如果是一個 iterable,它的元素必須是範圍為
0 <= x < 256的整數,並且會被用作陣列的初始值。
如果沒有引數,則建立長度為 0 的陣列。
可參考 Binary Sequence Types --- bytes, bytearray, memoryview 和 Bytearray 物件。
- class bytes(source=b'')
- class bytes(source, encoding, errors='strict')
回傳一個新的 "bytes" 物件,會是一個元素是範圍為
0 <= x < 256整數的不可變序列。bytes是bytearray的不可變版本 — 它的同樣具備不改變物件的 method,也有相同的索引和切片操作。因此,建構函式的引數和
bytearray()相同。Bytes 物件還可以用文字建立,參見 String and Bytes literals。
可參考 Binary Sequence Types --- bytes, bytearray, memoryview、Bytes Objects 和 Bytes 和 Bytearray 的操作。
- callable(object, /)¶
如果引數 object 是可呼叫的,回傳
True,否則回傳False。如果回傳True,呼叫仍可能會失敗;但如果回傳False,則呼叫 object 肯定會失敗。注意 class 是可呼叫的(呼叫 class 會回傳一個新的實例);如果實例的 class 有定義__call__()method,則它是可呼叫的。在 3.2 版被加入: 這個函式一開始在 Python 3.0 被移除,但在 Python 3.2 又被重新加入。
- chr(codepoint, /)¶
回傳代表有特定 Unicode 編碼位置字元的字串。例如,
chr(97)回傳字串'a',而chr(8364)回傳字串'€'。這是ord()的逆函式。引數的有效範圍是 0 到 1,114,111(16 進制表示為 0x10FFFF)。如果它超過這個範圍,會引發
ValueError。
- @classmethod¶
把一個 method 封裝成 class method(類別方法)。
一個 class method 把自己的 class 作為第一個引數,就像一個實例 method 把實例自己作為第一個引數。請用以下慣例來宣告 class method:
class C: @classmethod def f(cls, arg1, arg2): ...
@classmethod語法是一個函式 decorator — 參見 函式定義 中關於函式定義的詳細介紹。一個 class method 可以在 class(如
C.f())或實例(如C().f())上呼叫。實例除了它的 class 資訊,其他都會被忽略。如果一個 class method 在 subclass 上呼叫,subclass 會作為第一個引數傳入。Class method 和 C++ 與 Java 的 static method 是有區別的。如果你想瞭解 static method,請看本節的
staticmethod()。關於 class method 的更多資訊,請參考標準型別階層。在 3.9 版的變更: Class methods 現在可以包裝其他描述器,例如
property()在 3.10 版的變更: Class method 現在繼承了 method 屬性(
__module__、__name__、__qualname__、__doc__和__annotations__),並擁有一個新的__wrapped__屬性。自從版本 3.11 後不推薦使用,已從版本 3.13 中移除。: Class methods 不能再包裝其他的描述器,例如
property()。
- compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1)¶
將 source 編譯成程式碼或 AST 物件。程式碼物件可以被
exec()或eval()執行。source 可以是一般的字串、bytes 字串、或者 AST 物件。參見astmodule(模組)的說明文件瞭解如何使用 AST 物件。filename 引數必須是程式碼的檔名;如果程式碼不是從檔案中讀取,可以傳入一些可辨識的值(經常會使用
'<string>'來替代)。mode 引數指定了編譯程式碼時必須用的模式。如果 source 是一系列的陳述式,可以是
'exec';如果是單一運算式,可以是'eval';如果是單個互動式陳述式,可以是'single'(在最後一種情況下,如果運算式執行結果不是None則會被印出來)。可選引數 flags 和 dont_inherit 控制啟用哪個編譯器選項以及允許哪個未來功能。如果兩者都不存在(或兩者都為零),則會呼叫與
compile()相同旗標的程式碼來編譯。如果給定 flags 引數而未給定 dont_inherit(或為零)則無論如何都會使用由 flags 引數所指定的編譯器選項和未來陳述式。如果 dont_inherit 是一個非零整數,則使用 flags 引數 -- 周圍程式碼中的旗標(未來功能和編譯器選項)將被忽略。編譯器選項和 future 陳述式使用 bits 來表示,可以一起被位元操作 OR 來表示複數個選項。需要被具體定義特徵的位元域可以透過
__future__module 中_Feature實例中的compiler_flag屬性來獲得。編譯器旗標可以在astmodule 中搜尋有