新聞中心
內(nèi)置函數(shù)
python 解釋器內(nèi)置了很多函數(shù)和類型,任何時候都能使用。以下按字母順序給出列表。

創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站設(shè)計制作、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的武都網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
|
內(nèi)置函數(shù) |
|||
|---|---|---|---|
| A abs() aiter() all() any() anext() ascii() B bin() bool() breakpoint() bytearray() bytes() C callable() chr() classmethod() compile() complex() D delattr() dict() dir() divmod() | E enumerate() eval() exec() F filter() float() format() frozenset() G getattr() globals() H hasattr() hash() help() hex() I id() input() int() isinstance() issubclass() iter() | L len() list() locals() M map() max() memoryview() min() N next() O object() oct() open() ord() P pow() print() property() | R range() repr() reversed() round() S set() setattr() slice() sorted() staticmethod() str() sum() super() T tuple() type() V vars() Z zip() _import () |
abs(x, /)
返回一個數(shù)的絕對值。 參數(shù)可以是整數(shù)、浮點數(shù)或任何實現(xiàn)了 __abs__() 的對象。 如果參數(shù)是一個復(fù)數(shù),則返回它的模。
aiter(async_iterable, /)
返回 asynchronous iterable 的 asynchronous iterator 。相當(dāng)于調(diào)用 x.__aiter__()。
注意:與 iter() 不同,aiter() 沒有兩個參數(shù)的版本。
3.10 新版功能.
all(iterable, /)
如果 iterable 的所有元素均為真值(或可迭代對象為空)則返回 True 。 等價于:
def all(iterable):for element in iterable:if not element:return Falsereturn True
awaitable anext(async_iterator, /)
awaitable anext(async_iterator, default, /)
當(dāng)進入 await 狀態(tài)時,從給定 asynchronous iterator 返回下一數(shù)據(jù)項,迭代完畢則返回 default。
這是內(nèi)置函數(shù) next() 的異步版本,類似于:
調(diào)用 async_iterator 的 __anext__() 方法,返回一個 awaitable。等待返回迭代器的下一個值。若有給出 default,則在迭代完畢后會返回給出的值,否則會觸發(fā) StopAsyncIteration。
3.10 新版功能.
any(iterable, /)
如果 iterable 的任一元素為真值則返回 True。 如果可迭代對象為空,返回 False。 等價于:
def any(iterable):for element in iterable:if element:return Truereturn False
ascii(object, /)
與 repr() 類似,返回一個字符串,表示對象的可打印形式,但在 repr() 返回的字符串中,非 ASCII 字符會用 \x、\u 和 \U 進行轉(zhuǎn)義。生成的字符串類似于 Python 2 中 repr() 的返回結(jié)果。
bin(x, /)
將整數(shù)轉(zhuǎn)變?yōu)橐浴?b”前綴的二進制字符串。結(jié)果是一個合法的 Python 表達(dá)式。如果 x 不是 Python 的 int 對象,它必須定義 __index__() 方法,以便返回整數(shù)值。下面是一些例子:
>>> bin(3)'0b11'>>> bin(-10)'-0b1010'
若要控制是否顯示前綴“0b”,可以采用以下兩種方案:
>>> format(14, '#b'), format(14, 'b')('0b1110', '1110')>>> f'{14:#b}', f'{14:b}'('0b1110', '1110')
另見 format() 獲取更多信息。
class bool(x=False, /)
返回布爾值,True 或 False。x 用標(biāo)準(zhǔn)的 真值測試過程 進行轉(zhuǎn)換。如果 x 為 False 或省略,則返回 False;否則返回 True。 bool 類是 int 的子類(見 數(shù)字類型 —- int, float, complex )。它不能再被繼承。它唯一的實例就是 False 和 True (參閱 布爾值 )。
在 3.7 版更改: x 現(xiàn)在只能作為位置參數(shù)。
breakpoint(\args, **kws*)
This function drops you into the debugger at the call site. Specifically, it calls sys.breakpointhook(), passing args and kws straight through. By default, sys.breakpointhook() calls pdb.set_trace() expecting no arguments. In this case, it is purely a convenience function so you don’t have to explicitly import pdb or type as much code to enter the debugger. However, sys.breakpointhook() can be set to some other function and breakpoint() will automatically call that, allowing you to drop into the debugger of choice. If sys.breakpointhook() is not accessible, this function will raise RuntimeError.
引發(fā)一個 審計事件 builtins.breakpoint 并附帶參數(shù) breakpointhook。
3.7 新版功能.
class bytearray(source=b’’)
class bytearray(source, encoding)
class bytearray(source, encoding, errors)
返回一個新的 bytes 數(shù)組。 bytearray 類是一個可變序列,包含范圍為 0 <= x < 256 的整數(shù)。它有可變序列大部分常見的方法,見 可變序列類型 的描述;同時有 bytes 類型的大部分方法,參見 bytes 和 bytearray 操作。
可選形參 source 可以用不同的方式來初始化數(shù)組:
-
如果是一個 string,您必須提供 encoding 參數(shù)(errors 參數(shù)仍是可選的);bytearray() 會使用 str.encode() 方法來將 string 轉(zhuǎn)變成 bytes。
-
如果是一個 integer,會初始化大小為該數(shù)字的數(shù)組,并使用 null 字節(jié)填充。
-
如果是一個遵循 緩沖區(qū)接口 的對象,該對象的只讀緩沖區(qū)將被用來初始化字節(jié)數(shù)組。
-
如果是一個 iterable 可迭代對象,它的元素的范圍必須是
0 <= x < 256的整數(shù),它會被用作數(shù)組的初始內(nèi)容。
如果沒有實參,則創(chuàng)建大小為 0 的數(shù)組。
另見 二進制序列類型 —- bytes, bytearray, memoryview 和 bytearray 對象。
class bytes(source=b’’)
class bytes(source, encoding)
class bytes(source, encoding, errors)
返回一個新的“bytes”對象,這是一個不可變序列,包含范圍為 0 <= x < 256 的整數(shù)。bytes 是 bytearray 的不可變版本——帶有同樣不改變序列的方法,支持同樣的索引、切片操作。
因此,構(gòu)造函數(shù)的實參和 bytearray() 相同。
字節(jié)對象還可以用字面值創(chuàng)建,參見 字符串與字節(jié)串字面值。
另見 二進制序列類型 —- bytes, bytearray, memoryview,bytes 對象 和 bytes 和 bytearray 操作。
callable(object, /)
如果參數(shù) object 是可調(diào)用的就返回 True,否則返回 False。 如果返回 True,調(diào)用仍可能失敗,但如果返回 False,則調(diào)用 object 將肯定不會成功。 請注意類是可調(diào)用的(調(diào)用類將返回一個新的實例);如果實例所屬的類有 __call__() 則它就是可調(diào)用的。
3.2 新版功能: 這個函數(shù)一開始在 Python 3.0 被移除了,但在 Python 3.2 被重新加入。
chr(i, /)
返回 Unicode 碼位為整數(shù) i 的字符的字符串格式。例如,chr(97) 返回字符串 'a',chr(8364) 返回字符串 '€'。這是 ord() 的逆函數(shù)。
實參的合法范圍是 0 到 1,114,111(16 進制表示是 0x10FFFF)。如果 i 超過這個范圍,會觸發(fā) ValueError 異常。
@classmethod
把一個方法封裝成類方法。
類方法隱含的第一個參數(shù)就是類,就像實例方法接收實例作為參數(shù)一樣。要聲明一個類方法,按慣例請使用以下方案:
class C:@classmethoddef f(cls, arg1, arg2): ...
@classmethod 這樣的形式稱為函數(shù)的 decorator — 詳情參閱 函數(shù)定義。
類方法的調(diào)用可以在類上進行 (例如 C.f()) 也可以在實例上進行 (例如 C().f())。 其所屬類以外的類實例會被忽略。 如果類方法在其所屬類的派生類上調(diào)用,則該派生類對象會被作為隱含的第一個參數(shù)被傳入。
類方法與 C++ 或 Java 中的靜態(tài)方法不同。 如果你需要后者,請參閱本節(jié)中的 staticmethod()。 有關(guān)類方法的更多信息,請參閱 標(biāo)準(zhǔn)類型層級結(jié)構(gòu)。
在 3.9 版更改: 類方法現(xiàn)在可以包裝其他 描述器 例如 property()。
在 3.10 版更改: 類方法現(xiàn)在繼承了方法的屬性(__module__、__name__、__qualname__、__doc__ 和 __annotations__),并擁有一個新的``__wrapped__`` 屬性。
在 3.11 版更改: Class methods can no longer wrap other descriptors such as property().
compile(source, filename, mode, flags=0, dont_inherit=False, optimize=- 1)
將 source 編譯成代碼或 AST 對象。代碼對象可以被 exec() 或 eval() 執(zhí)行。source 可以是常規(guī)的字符串、字節(jié)字符串,或者 AST 對象。參見 ast 模塊的文檔了解如何使用 AST 對象。
filename 實參需要是代碼讀取的文件名;如果代碼不需要從文件中讀取,可以傳入一些可辨識的值(經(jīng)常會使用 ')。
mode 實參指定了編譯代碼必須用的模式。如果 source 是語句序列,可以是 'exec';如果是單一表達(dá)式,可以是 'eval';如果是單個交互式語句,可以是 'single'。(在最后一種情況下,如果表達(dá)式執(zhí)行結(jié)果不是 None 將會被打印出來。)
可選參數(shù) flags 和 dont_inherit 控制應(yīng)當(dāng)激活哪個 編譯器選項 以及應(yīng)當(dāng)允許哪個 future 特性。 如果兩者都未提供 (或都為零) 則代碼會應(yīng)用與調(diào)用 compile() 的代碼相同的旗標(biāo)來編譯。 如果給出了 flags 參數(shù)而未給出 dont_inherit (或者為零) 則會在無論如何都將被使用的旗標(biāo)之外還會額外使用 flags 參數(shù)所指定的編譯器選項和 future 語句。 如果 dont_inherit 為非零整數(shù),則只使用 flags 參數(shù) — 外圍代碼中的旗標(biāo) (future 特性和編譯器選項) 會被忽略。
編譯器選項和 future 語句是由比特位來指明的。 比特位可以通過一起按位 OR 來指明多個選項。 指明特定 future 特性所需的比特位可以在 __future__ 模塊的 _Feature 實例的 compiler_flag 屬性中找到。 編譯器旗標(biāo) 可以在 ast 模塊中查找?guī)в?PyCF_ 前綴的名稱。
optimize 實參指定編譯器的優(yōu)化級別;默認(rèn)值 -1 選擇與解釋器的 -O 選項相同的優(yōu)化級別。顯式級別為 0 (沒有優(yōu)化;__debug__ 為真)、1 (斷言被刪除, __debug__ 為假)或 2 (文檔字符串也被刪除)。
如果編譯的源碼不合法,此函數(shù)會觸發(fā) SyntaxError 異常;如果源碼包含 null 字節(jié),則會觸發(fā) ValueError 異常。
如果您想分析 Python 代碼的 AST 表示,請參閱 ast.parse()。
引發(fā)一個 審計事件 compile 附帶參數(shù) source, filename。
備注
在 'single' 或 'eval' 模式編譯多行代碼字符串時,輸入必須以至少一個換行符結(jié)尾。 這使 code 模塊更容易檢測語句的完整性。
警告
在將足夠大或者足夠復(fù)雜的字符串編譯成 AST 對象時,Python 解釋器有可能因為 Python AST 編譯器的棧深度限制而崩潰。
在 3.2 版更改: Windows 和 Mac 的換行符均可使用。而且在 'exec' 模式下的輸入不必再以換行符結(jié)尾了。另增加了 optimize 參數(shù)。
在 3.5 版更改: 之前 source 中包含 null 字節(jié)的話會觸發(fā) TypeError 異常。
3.8 新版功能: ast.PyCF_ALLOW_TOP_LEVEL_AWAIT 現(xiàn)在可在旗標(biāo)中傳入以啟用對最高層級 await, async for 和 async with 的支持。
class complex(real=0, imag=0)
class complex(string, /)
返回值為 real + imag*1j 的復(fù)數(shù),或?qū)⒆址驍?shù)字轉(zhuǎn)換為復(fù)數(shù)。如果第一個形參是字符串,則它被解釋為一個復(fù)數(shù),并且函數(shù)調(diào)用時必須沒有第二個形參。第二個形參不能是字符串。每個實參都可以是任意的數(shù)值類型(包括復(fù)數(shù))。如果省略了 imag,則默認(rèn)值為零,構(gòu)造函數(shù)會像 int 和 float 一樣進行數(shù)值轉(zhuǎn)換。如果兩個實參都省略,則返回 0j。
對于一個普通 Python 對象 x,complex(x) 會委托給 x.__complex__()。 如果 __complex__() 未定義則將回退至 __float__()。 如果 __float__() 未定義則將回退至 __index__()。
備注
當(dāng)從字符串轉(zhuǎn)換時,字符串在 + 或 - 的周圍必須不能有空格。例如 complex('1+2j') 是合法的,但 complex('1 + 2j') 會觸發(fā) ValueError 異常。
數(shù)字類型 —- int, float, complex 描述了復(fù)數(shù)類型。
在 3.6 版更改: 您可以使用下劃線將代碼文字中的數(shù)字進行分組。
在 3.8 版更改: 如果 __complex__() 和 __float__() 未定義則回退至 __index__()。
delattr(object, name, /)
This is a relative of setattr(). The arguments are an object and a string. The string must be the name of one of the object’s attributes. The function deletes the named attribute, provided the object allows it. For example, delattr(x, 'foobar') is equivalent to del x.foobar. name need not be a Python identifier (see setattr()).
class dict(\*kwarg*)
class dict(mapping, /, \*kwarg*)
class dict(iterable, /, \*kwarg*)
創(chuàng)建一個新的字典。dict 對象是一個字典類。參見 dict 和 映射類型 —- dict 了解這個類。
其他容器類型,請參見內(nèi)置的 list、set 和 tuple 類,以及 collections 模塊。
dir()
dir(object, /)
如果沒有實參,則返回當(dāng)前本地作用域中的名稱列表。如果有實參,它會嘗試返回該對象的有效屬性列表。
如果對象有一個名為 __dir__() 的方法,那么該方法將被調(diào)用,并且必須返回一個屬性列表。這允許實現(xiàn)自定義 __getattr__() 或 __getattribute__() 函數(shù)的對象能夠自定義 dir() 來報告它們的屬性。
如果對象未提供 __dir__() 方法,該函數(shù)會盡量從對象的 __dict__ 屬性和其類型對象中收集信息。得到的列表不一定是完整,如果對象帶有自定義 __getattr__() 方法時,結(jié)果可能不準(zhǔn)確。
默認(rèn)的 dir() 機制對不同類型的對象行為不同,它會試圖返回最相關(guān)而不是最全的信息:
-
如果對象是模塊對象,則列表包含模塊的屬性名稱。
-
如果對象是類型或類對象,則列表包含它們的屬性名稱,并且遞歸查找所有基類的屬性。
-
否則,列表包含對象的屬性名稱,它的類屬性名稱,并且遞歸查找它的類的所有基類的屬性。
返回的列表按字母表排序。例如:
>>> import struct>>> dir() # show the names in the module namespace['__builtins__', '__name__', 'struct']>>> dir(struct) # show the names in the struct module['Struct', '__all__', '__builtins__', '__cached__', '__doc__', '__file__','__initializing__', '__loader__', '__name__', '__package__','_clearcache', 'calcsize', 'error', 'pack', 'pack_into','unpack', 'unpack_from']>>> class Shape:... def __dir__(self):... return ['area', 'perimeter', 'location']>>> s = Shape()>>> dir(s)['area', 'location', 'perimeter']
備注
因為 dir() 主要是為了便于在交互式時使用,所以它會試圖返回人們感興趣的名字集合,而不是試圖保證結(jié)果的嚴(yán)格性或一致性,它具體的行為也可能在不同版本之間改變。例如,當(dāng)實參是一個類時,metaclass 的屬性不包含在結(jié)果列表中。
divmod(a, b, /)
以兩個(非復(fù)數(shù))數(shù)字為參數(shù),在作整數(shù)除法時,返回商和余數(shù)。若操作數(shù)為混合類型,則適用二進制算術(shù)運算符的規(guī)則。對于整數(shù)而言,結(jié)果與 (a // b, a % b) 相同。對于浮點數(shù)則結(jié)果為``(q, a % b)``,其中 q 通常為 math.floor(a / b),但可能比它小 1。在任何情況下,q * b + a % b 都非常接近 a,如果 a % b 非零,則結(jié)果符號與 b 相同,并且 0 <= abs(a % b) < abs(b)。
enumerate(iterable, start=0)
返回一個枚舉對象。iterable 必須是一個序列,或 iterator,或其他支持迭代的對象。 enumerate() 返回的迭代器的 __next__() 方法返回一個元組,里面包含一個計數(shù)值(從 start 開始,默認(rèn)為 0)和通過迭代 iterable 獲得的值。
>>> seasons = ['Spring', 'Summer', 'Fall', 'Winter']>>> list(enumerate(seasons))[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]>>> list(enumerate(seasons, start=1))[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
等價于:
def enumerate(sequence, start=0):n = startfor elem in sequence:yield n, elemn += 1
eval(expression, /, globals=None, locals=None)
實參是一個字符串,以及可選的 globals 和 locals。globals 實參必須是一個字典。locals 可以是任何映射對象。
表達(dá)式解析參數(shù) expression 并作為 Python 表達(dá)式進行求值(從技術(shù)上說是一個條件列表),采用 globals 和 locals 字典作為全局和局部命名空間。 如果存在 globals 字典,并且不包含 __builtins__ 鍵的值,則在解析 expression 之前會插入以該字符串為鍵以對內(nèi)置模塊 builtins 的字典的引用為值的項。 這樣就可以在將 globals 傳給 eval() 之前通過向其傳入你自己的 __builtins__ 字典來控制可供被執(zhí)行代碼可以使用哪些內(nèi)置模塊。 如果 locals 字典被省略則它默認(rèn)為 globals 字典。 如果兩個字典都被省略,則將使用調(diào)用 eval() 的環(huán)境中的 globals 和 locals 來執(zhí)行該表達(dá)式。 注意,eval() 無法訪問閉包環(huán)境中的 嵌套作用域 (非局部變量)。
返回值就是表達(dá)式的求值結(jié)果。 語法錯誤將作為異常被報告。 例如:
>>> x = 1>>> eval('x+1')2
該函數(shù)還可用于執(zhí)行任意代碼對象(比如由 compile() 創(chuàng)建的對象)。 這時傳入的是代碼對象,而非一個字符串了。如果代碼對象已用參數(shù)為 mode 的 'exec' 進行了編譯,那么 eval() 的返回值將為 None。
提示: exec() 函數(shù)支持語句的動態(tài)執(zhí)行。 globals() 和 locals() 函數(shù)分別返回當(dāng)前的全局和本地字典,可供傳給 eval() 或 exec() 使用。
如果給出的源數(shù)據(jù)是個字符串,那么其前后的空格和制表符將被剔除。
另外可以參閱 ast.literal_eval(),該函數(shù)可以安全執(zhí)行僅包含文字的表達(dá)式字符串。
引發(fā)一個 審計事件 exec 附帶參數(shù) code_object。
exec(object, globals=None, locals=None, /, **, closure=None*)
這個函數(shù)支持動態(tài)執(zhí)行 Python 代碼。 object 必須是字符串或者代碼對象。 如果是字符串,那么該字符串將被解析為一系列 Python 語句并執(zhí)行(除非發(fā)生語法錯誤)。 1 如果是代碼對象,它將被直接執(zhí)行。 在任何情況下,被執(zhí)行的代碼都應(yīng)當(dāng)是有效的文件輸入(見參考手冊中的 文件輸入 一節(jié))。 請注意即使在傳遞給 exec() 函數(shù)的代碼的上下文中,nonlocal, yield 和 return 語句也不能在函數(shù)定義以外使用。 該函數(shù)的返回值是 None。
無論在什么情況下,如果省略了可選部分,代碼將運行于當(dāng)前作用域中。如果只提供了 globals,則必須為字典對象(而不能是字典的子類),同時用于存放全局變量和局部變量。如果提供了 globals 和 locals,則將分別用于全局變量和局部變量。locals 可以是任意字典映射對象。請記住,在模塊級別,globals 和 locals 是同一個字典。如果 exec 獲得兩個獨立的對象作為 globals 和 locals,代碼執(zhí)行起來就像嵌入到某個類定義中一樣。
如果 globals 字典不包含 __builtins__ 鍵值,則將為該鍵插入對內(nèi)建 builtins 模塊字典的引用。因此,在將執(zhí)行的代碼傳遞給 exec() 之前,可以通過將自己的 __builtins__ 字典插入到 globals 中來控制可以使用哪些內(nèi)置代碼。
The closure argument specifies a closure—a tuple of cellvars. It’s only valid when the object is a code object containing free variables. The length of the tuple must exactly match the number of free variables referenced by the code object.
引發(fā)一個 審計事件 exec 附帶參數(shù) code_object。
備注
內(nèi)置 globals() 和 locals() 函數(shù)各自返回當(dāng)前的全局和本地字典,因此可以將它們傳遞給 exec() 的第二個和第三個實參。
備注
默認(rèn)情況下,locals 的行為如下面 locals() 函數(shù)描述的一樣:不要試圖改變默認(rèn)的 locals 字典。 如果您需要在 exec() 函數(shù)返回時查看代碼對 locals 的影響,請明確地傳遞 locals 字典。
在 3.11 版更改: Added the closure parameter.
filter(function, iterable, /)
用 iterable 中函數(shù) function 返回真的那些元素,構(gòu)建一個新的迭代器。iterable 可以是一個序列,一個支持迭代的容器,或一個迭代器。如果 function 是 None ,則會假設(shè)它是一個身份函數(shù),即 iterable 中所有返回假的元素會被移除。
請注意, filter(function, iterable) 相當(dāng)于一個生成器表達(dá)式,當(dāng) function 不是 None 的時候為 (item for item in iterable if function(item));function 是 None 的時候為 (item for item in iterable if item) 。
請參閱 itertools.filterfalse() 了解,只有 function 返回 false 時才選取 iterable 中元素的補充函數(shù)。
class float(x=0.0, /)
返回從數(shù)字或字符串 x 生成的浮點數(shù)。
如果參數(shù)是個字符串,則應(yīng)包含一個十進制數(shù)字,前面可選帶上符號,也可選前后帶有空白符。符號可以是``‘+’`` 或 '-';'+' 符號對值沒有影響。參數(shù)也可以是一個代表 NaN(非數(shù)字)或正負(fù)無窮大的字符串。更確切地說,在去除前導(dǎo)和尾部的空白符后,輸入?yún)?shù)必須符合以下語法:
- sign ::= "+" | "-"
- infinity ::= "Infinity" | "inf"
- nan ::= "nan"
- numeric_value ::=
floatnumber| infinity | nan- numeric_string ::= [sign] numeric_value
這里的 floatnumber 是指 Python 的浮點數(shù)格式,在 浮點數(shù)字面值 中有介紹。大小寫沒有關(guān)系,所以“inf”、“Inf”、“INFINITY”、“iNfINity”都可接受為正無窮的拼寫形式。
另一方面,如果實參是整數(shù)或浮點數(shù),則返回具有相同值(在 Python 浮點精度范圍內(nèi))的浮點數(shù)。如果實參在 Python 浮點精度范圍外,則會觸發(fā) OverflowError。
對于一個普通 Python 對象 x,float(x) 會委托給 x.__float__()。 如果 __float__() 未定義則將回退至 __index__()。
如果沒有實參,則返回 0.0 。
示例:
>>> float('+1.23')1.23>>> float(' -12345\n')-12345.0>>> float('1e-003')0.001>>> float('+1E6')1000000.0>>> float('-Infinity')-inf
數(shù)字類型 —- int, float, complex 描述了浮點類型。
在 3.6 版更改: 您可以使用下劃線將代碼文字中的數(shù)字進行分組。
在 3.7 版更改: x 現(xiàn)在只能作為位置參數(shù)。
在 3.8 版更改: 如果 __float__() 未定義則回退至 __index__()。
format(value, format_spec=’’, /)
將 value 轉(zhuǎn)換為“格式化后”的形式,格式由 format_spec 進行控制。format_spec 的解釋方式取決于 value 參數(shù)的類型;但大多數(shù)內(nèi)置類型使用一種標(biāo)準(zhǔn)的格式化語法: 格式規(guī)格迷你語言。
默認(rèn)的 format_spec 是一個空字符串,它通常給出與調(diào)用 str(value) 相同的結(jié)果。
調(diào)用 format(value, format_spec) 會轉(zhuǎn)換成 type(value).__format__(value, format_spec) ,所以實例字典中的 __format__() 方法將不會調(diào)用。如果方法搜索回退到 object 類但 format_spec 不為空,或者如果 format_spec 或返回值不是字符串,則會觸發(fā) TypeError 異常。
在 3.4 版更改: 當(dāng) format_spec 不是空字符串時, object().__format__(format_spec) 會觸發(fā) TypeError。
class frozenset(iterable=set(), /)
返回一個新的 frozenset 對象,它包含可選參數(shù) iterable 中的元素。 frozenset 是一個內(nèi)置的類。有關(guān)此類的文檔,請參閱 frozenset 和 集合類型 —- set, frozenset。
請參閱內(nèi)建的 set、list、tuple 和 dict 類,以及 collections 模塊來了解其它的容器。
getattr(object, name, /)
getattr(object, name, default, /)
Return the value of the named attribute of object. name must be a string. If the string is the name of one of the object’s attributes, the result is the value of that attribute. For example, getattr(x, 'foobar') is equivalent to x.foobar. If the named attribute does not exist, default is returned if provided, otherwise AttributeError is raised. name need not be a Python identifier (see setattr()).
備注
由于 私有名稱混合 發(fā)生在編譯時,因此必須 手動混合私有屬性(以兩個下劃線打頭的屬性)名稱以使使用 getattr() 來提取它。
globals()
返回實現(xiàn)當(dāng)前模塊命名空間的字典。對于函數(shù)內(nèi)的代碼,這是在定義函數(shù)時設(shè)置的,無論函數(shù)在哪里被調(diào)用都保持不變。
hasattr(object, name, /)
該實參是一個對象和一個字符串。如果字符串是對象的屬性之一的名稱,則返回 True,否則返回 False。(此功能是通過調(diào)用 getattr(object, name) 看是否有 AttributeError 異常來實現(xiàn)的。)
hash(object, /)
返回該對象的哈希值(如果它有的話)。哈希值是整數(shù)。它們在字典查找元素時用來快速比較字典的鍵。相同大小的數(shù)字變量有相同的哈希值(即使它們類型不同,如 1 和 1.0)。
備注
如果對象實現(xiàn)了自己的 __hash__() 方法,請注意,hash() 根據(jù)機器的字長來截斷返回值。另請參閱 __hash__()。
help()
help(request)
啟動內(nèi)置的幫助系統(tǒng)(此函數(shù)主要在交互式中使用)。如果沒有實參,解釋器控制臺里會啟動交互式幫助系統(tǒng)。如果實參是一個字符串,則在模塊、函數(shù)、類、方法、關(guān)鍵字或文檔主題中搜索該字符串,并在控制臺上打印幫助信息。如果實參是其他任意對象,則會生成該對象的幫助頁。
請注意,如果在調(diào)用 help() 時,目標(biāo)函數(shù)的形參列表中存在斜杠(/),則意味著斜杠之前的參數(shù)只能是位置參數(shù)。詳情請參閱 有關(guān)僅限位置形參的 FAQ 條目。
該函數(shù)通過 site 模塊加入到內(nèi)置命名空間。
在 3.4 版更改: pydoc 和 inspect 的變更使得可調(diào)用對象的簽名信息更加全面和一致。
hex(x, /)
將整數(shù)轉(zhuǎn)換為以“0x”為前綴的小寫十六進制字符串。如果 x 不是 Python int 對象,則必須定義返回整數(shù)的 __index__() 方法。一些例子:
>>> hex(255)'0xff'>>> hex(-42)'-0x2a'
如果要將整數(shù)轉(zhuǎn)換為大寫或小寫的十六進制字符串,并可選擇有無“0x”前綴,則可以使用如下方法:
>>> '%#x' % 255, '%x' % 255, '%X' % 255('0xff', 'ff', 'FF')>>> format(255, '#x'), format(255, 'x'), format(255, 'X')('0xff', 'ff', 'FF')>>> f'{255:#x}', f'{255:x}', f'{255:X}'('0xff', 'ff', 'FF')
另見 format() 獲取更多信息。
另請參閱 int() 將十六進制字符串轉(zhuǎn)換為以 16 為基數(shù)的整數(shù)。
備注
如果要獲取浮點數(shù)的十六進制字符串形式,請使用 float.hex() 方法。
id(object, /)
返回對象的“標(biāo)識值”。該值是一個整數(shù),在此對象的生命周期中保證是唯一且恒定的。兩個生命期不重疊的對象可能具有相同的 id() 值。
CPython 實現(xiàn)細(xì)節(jié): This is the address of the object in memory.
引發(fā)一個 審計事件 builtins.id,附帶參數(shù) id。
input()
input(prompt, /)
如果存在 prompt 實參,則將其寫入標(biāo)準(zhǔn)輸出,末尾不帶換行符。接下來,該函數(shù)從輸入中讀取一行,將其轉(zhuǎn)換為字符串(除了末尾的換行符)并返回。當(dāng)讀取到 EOF 時,則觸發(fā) EOFError。例如:
>>> s = input('--> ')--> Monty Python's Flying Circus>>> s"Monty Python's Flying Circus"
如果加載了 readline 模塊,input() 將使用它來提供復(fù)雜的行編輯和歷史記錄功能。
引發(fā)一個 審計事件 builtins.input 附帶參數(shù) prompt。
在成功讀取輸入之后引發(fā)一個 審計事件 builtins.input/result 附帶結(jié)果。
class int(x=0, /)
class int(x, /, base=10)
返回一個基于數(shù)字或字符串 x 構(gòu)造的整數(shù)對象,或者在未給出參數(shù)時返回 0。 如果 x 定義了 __int__(),int(x) 將返回 x.__int__()。 如果 x 定義了 __index__(),它將返回 x.__index__()。 如果 x 定義了 __trunc__(),它將返回 x.__trunc__()。 對于浮點數(shù),它將向零舍入。
如果 x 不是數(shù)字,或者有 base 參數(shù),x 必須是字符串、bytes、表示進制為 base 的 整數(shù)字面值 的 bytearray 實例。該文字前可以有 + 或 - (中間不能有空格),前后可以有空格。一個進制為 n 的數(shù)字包含 0 到 n-1 的數(shù),其中 a 到 z (或 A 到 Z )表示 10 到 35。默認(rèn)的 base 為 10 ,允許的進制有 0、2-36。2、8、16 進制的數(shù)字可以在代碼中用 0b/0B 、 0o/0O 、 0x/0X 前綴來表示。進制為 0 將安照代碼的字面量來精確解釋,最后的結(jié)果會是 2、8、10、16 進制中的一個。所以 int('010', 0) 是非法的,但 int('010') 和 int('010', 8) 是合法的。
整數(shù)類型定義請參閱 數(shù)字類型 —- int, float, complex 。
在 3.4 版更改: 如果 base 不是 int 的實例,但 base 對象有 base.__index__ 方法,則會調(diào)用該方法來獲取進制數(shù)。以前的版本使用 base.__int__ 而不是 base.__index__。
在 3.6 版更改: 您可以使用下劃線將代碼文字中的數(shù)字進行分組。
在 3.7 版更改: x 現(xiàn)在只能作為位置參數(shù)。
在 3.8 版更改: 如果 __int__() 未定義則回退至 __index__()。
在 3.11 版更改: The delegation to __trunc__() is deprecated.
在 3.11 版更改: int string inputs and string representations can be limited to help avoid denial of service attacks. A ValueError is raised when the limit is exceeded while converting a string x to an int or when converting an int into a string would exceed the limit. See the integer string conversion length limitation documentation.
isinstance(object, classinfo, /)
Return True if the object argument is an instance of the classinfo argument, or of a (direct, indirect, or virtual) subclass thereof. If object is not an object of the given type, the function always returns False. If classinfo is a tuple of type objects (or recursively, other such tuples) or a union 類型 of multiple types, return True if object is an instance of any of the types. If classinfo is not a type or tuple of types and such tuples, a TypeError exception is raised. TypeError may not be raised for an invalid type if an earlier check succeeds.
在 3.10 版更改: classinfo 可以是一個 union 類型。
issubclass(class, classinfo, /)
如果 class 是 classinfo 的子類(直接、間接或 虛的 ),則返回 True。類將視為自己的子類。classinfo 可為類對象的元組(或遞歸地,其他這樣的元組)或 union 類型,這時如果 class 是 classinfo 中任何條目的子類,則返回 True 。任何其他情況都會觸發(fā) TypeError 異常。
在 3.10 版更改: classinfo 可以是一個 union 類型。
iter(object, /)
iter(object, sentinel, /)
返回一個 iterator 對象。根據(jù)是否存在第二個實參,第一個實參的解釋是非常不同的。如果沒有第二個實參,object 必須是支持 iterable 協(xié)議(有 __iter__() 方法)的集合對象,或必須支持序列協(xié)議(有 __getitem__() 方法,且數(shù)字參數(shù)從 0 開始)。如果它不支持這些協(xié)議,會觸發(fā) TypeError。如果有第二個實參 sentinel,那么 object 必須是可調(diào)用的對象。這種情況下生成的迭代器,每次迭代調(diào)用它的 __next__() 方法時都會不帶實參地調(diào)用 object;如果返回的結(jié)果是 sentinel 則觸發(fā) StopIteration,否則返回調(diào)用結(jié)果。
另請參閱 迭代器類型。
適合 iter() 的第二種形式的應(yīng)用之一是構(gòu)建塊讀取器。 例如,從二進制數(shù)據(jù)庫文件中讀取固定寬度的塊,直至到達(dá)文件的末尾:
from functools import partialwith open('mydata.db', 'rb') as f:for block in iter(partial(f.read, 64), b''):process_block(block)
len(s, /)
返回對象的長度(元素個數(shù))。實參可以是序列(如 string、bytes、tuple、list 或 range 等)或集合(如 dictionary、set 或 frozen set 等)。
CPython 實現(xiàn)細(xì)節(jié): len 對于大于 sys.maxsize 的長度如 range(2 ** 100) 會引發(fā) OverflowError。
class list
class list(iterable, /)
雖然被稱為函數(shù),list 實際上是一種可變序列類型,詳情請參閱 列表 和 序列類型 —- list, tuple, range。
locals()
更新并返回表示當(dāng)前本地符號表的字典。 在函數(shù)代碼塊但不是類代碼塊中調(diào)用 locals() 時將返回自由變量。 請注意在模塊層級上,locals() 和 globals() 是同一個字典。
備注
不要更改此字典的內(nèi)容;更改不會影響解釋器使用的局部變量或自由變量的值。
map(function, iterable, /, \iterables*)
Return an iterator that applies function to every item of iterable, yielding the results. If additional iterables arguments are passed, function must take that many arguments and is applied to the items from all iterables in parallel. With multiple iterables, the iterator stops when the shortest iterable is exhausted. For cases where the function inputs are already arranged into argument tuples, see itertools.starmap().
max(iterable, /, **, key=None*)
max(iterable, /, **, default, key=None*)
max(arg1, arg2, /, \args, key=None*)
返回可迭代對象中最大的元素,或者返回兩個及以上實參中最大的。
如果只提供了一個位置參數(shù),它必須是非空 iterable,返回可迭代對象中最大的元素;如果提供了兩個及以上的位置參數(shù),則返回最大的位置參數(shù)。
有兩個可選只能用關(guān)鍵字的實參。key 實參指定排序函數(shù)用的參數(shù),如傳給 list.sort() 的。default 實參是當(dāng)可迭代對象為空時返回的值。如果可迭代對象為空,并且沒有給 default ,則會觸發(fā) ValueError。
如果有多個最大元素,則此函數(shù)將返回第一個找到的。這和其他穩(wěn)定排序工具如 sorted(iterable, key=keyfunc, reverse=True)[0] 和 heapq.nlargest(1, iterable, key=keyfunc) 保持一致。
3.4 新版功能: keyword-only 實參 default 。
在 3.8 版更改: key 可以為 None。
class memoryview(object)
返回由給定實參創(chuàng)建的“內(nèi)存視圖”對象。有關(guān)詳細(xì)信息,請參閱 內(nèi)存視圖。
min(iterable, /, **, key=None*)
min(iterable, /, **, default, key=None*)
min(arg1, arg2, /, \args, key=None*)
返回可迭代對象中最小的元素,或者返回兩個及以上實參中最小的。
如果只提供了一個位置參數(shù),它必須是 iterable,返回可迭代對象中最小的元素;如果提供了兩個及以上的位置參數(shù),則返回最小的位置參數(shù)。
有兩個可選只能用關(guān)鍵字的實參。key 實參指定排序函數(shù)用的參數(shù),如傳給 list.sort() 的。default 實參是當(dāng)可迭代對象為空時返回的值。如果可迭代對象為空,并且沒有給 default ,則會觸發(fā) ValueError。
如果有多個最小元素,則此函數(shù)將返回第一個找到的。這和其他穩(wěn)定排序工具如 sorted(iterable, key=keyfunc)[0] 和 heapq.nsmallest(1, iterable, key=keyfunc) 保持一致。
3.4 新版功能: keyword-only 實參 default 。
在 3.8 版更改: key 可以為 None。
next(iterator, /)
next(iterator, default, /)
通過調(diào)用 iterator 的 __next__() 方法獲取下一個元素。如果迭代器耗盡,則返回給定的 default,如果沒有默認(rèn)值則觸發(fā) StopIteration。
class object
返回一個不帶特征的新對象。object 是所有類的基類。它帶有所有 Python 類實例均通用的方法。本函數(shù)不接受任何參數(shù)。
備注
由于 object 沒有 __dict__,因此無法將任意屬性賦給 object 的實例。
oct(x, /)
將一個整數(shù)轉(zhuǎn)變?yōu)橐粋€前綴為“0o”的八進制字符串。結(jié)果是一個合法的 Python 表達(dá)式。如果 x 不是 Python 的 int 對象,那它需要定義 __index__() 方法返回一個整數(shù)。一些例子:
>>> oct(8)'0o10'>>> oct(-56)'-0o70'
若要將整數(shù)轉(zhuǎn)換為八進制字符串,并可選擇是否帶有“0o”前綴,可采用如下方法:
>>> '%#o' % 10, '%o' % 10('0o12', '12')>>> format(10, '#o'), format(10, 'o')('0o12', '12')>>> f'{10:#o}', f'{10:o}'('0o12', '12')
另見 format() 獲取更多信息。
open(file, mode=’r’, buffering=- 1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
打開 file 并返回對應(yīng)的 file object。 如果該文件不能被打開,則引發(fā) OSError。 請參閱 讀寫文件 獲取此函數(shù)的更多用法示例。
file 是一個 path-like object,表示將要打開的文件的路徑(絕對路徑或者相對當(dāng)前工作目錄的路徑),也可以是要封裝文件對應(yīng)的整數(shù)類型文件描述符。(如果給出的是文件描述符,則當(dāng)返回的 I/O 對象關(guān)閉時它也會關(guān)閉,除非將 closefd 設(shè)為 False 。)
mode is an optional string that specifies the mode in which the file is opened. It defaults to 'r' which means open for reading in text mode. Other common values are 'w' for writing (truncating the file if it already exists), 'x' for exclusive creation, and 'a' for appending (which on some Unix systems, means that all writes append to the end of the file regardless of the current seek position). In text mode, if encoding is not specified the encoding used is platform-dependent: locale.getencoding() is called to get the current locale encoding. (For reading and writing raw bytes use binary mode and leave encoding unspecified.) The available modes are:
|
字符 |
含意 |
|---|---|
| 讀?。J(rèn)) |
| 寫入,并先截斷文件 |
| 排它性創(chuàng)建,如果文件已存在則失敗 |
| 打開文件用于寫入,如果文件存在則在末尾追加 |
| 二進制模式 |
| 文本模式(默認(rèn)) |
| 打開用于更新(讀取與寫入) |
默認(rèn)模式為 'r' (打開文件用于讀取文本,與 'rt' 同義)。'w+' 和 'w+b' 模式將打開文件并清空內(nèi)容。而 'r+' 和 'r+b' 模式將打開文件但不清空內(nèi)容。
正如在 概述 中提到的,Python區(qū)分二進制和文本I/O。以二進制模式打開的文件(包括 mode 參數(shù)中的 'b' )返回的內(nèi)容為 bytes 對象,不進行任何解碼。在文本模式下(默認(rèn)情況下,或者在 mode 參數(shù)中包含 't' )時,文件內(nèi)容返回為 str ,首先使用指定的 encoding (如果給定)或者使用平臺默認(rèn)的的字節(jié)編碼解碼。
備注
Python不依賴于底層操作系統(tǒng)的文本文件概念;所有處理都由Python本身完成,因此與平臺無關(guān)。
buffering 是一個可選的整數(shù),用于設(shè)置緩沖策略。 傳入 0 來關(guān)閉緩沖(只允許在二進制模式下),傳入 1 來選擇行緩沖(只在文本模式下可用),傳入一個整數(shù) > 1 來表示固定大小的塊緩沖區(qū)的字節(jié)大小。注意,這樣指定緩沖區(qū)的大小適用于二進制緩沖的 I/O ,但 TextIOWrapper (即用 mode='r+' 打開的文件)會有另一種緩沖。要禁用在 TextIOWrapper 緩沖,考慮使用 io.TextIOWrapper.reconfigure() 的 write_through 標(biāo)志來。當(dāng)沒有給出 buffering 參數(shù)時,默認(rèn)的緩沖策略工作如下。
-
二進制文件以固定大小的塊進行緩沖;使用啟發(fā)式方法選擇緩沖區(qū)的大小,嘗試確定底層設(shè)備的“塊大小”或使用 io.DEFAULT_BUFFER_SIZE。在許多系統(tǒng)上,緩沖區(qū)的長度通常為4096或8192字節(jié)。
-
“交互式”文本文件( isatty() 返回
True的文件)使用行緩沖。其他文本文件使用上述策略用于二進制文件。
encoding is the name of the encoding used to decode or encode the file. This should only be used in text mode. The default encoding is platform dependent (whatever locale.getencoding() returns), but any text encoding supported by Python can be used. See the codecs module for the list of supported encodings.
errors 是一個可選的字符串參數(shù),用于指定如何處理編碼和解碼錯誤 - 這不能在二進制模式下使用??梢允褂酶鞣N標(biāo)準(zhǔn)錯誤處理程序(列在 錯誤處理方案 ),但是使用 codecs.register_error() 注冊的任何錯誤處理名稱也是有效的。標(biāo)準(zhǔn)名稱包括:
-
如果存在編碼錯誤,
'strict'會引發(fā) ValueError 異常。 默認(rèn)值None具有相同的效果。 -
'ignore'忽略錯誤。請注意,忽略編碼錯誤可能會導(dǎo)致數(shù)據(jù)丟失。 -
'replace'會將替換標(biāo)記(例如'?')插入有錯誤數(shù)據(jù)的地方。 -
'surrogateescape'將把任何不正確的字節(jié)表示為 U+DC80 至 U+DCFF 范圍內(nèi)的下方替代碼位。 當(dāng)在寫入數(shù)據(jù)時使用surrogateescape錯誤處理句柄時這些替代碼位會被轉(zhuǎn)回到相同的字節(jié)。 這適用于處理具有未知編碼格式的文件。 -
只有在寫入文件時才支持
'xmlcharrefreplace'。編碼不支持的字符將替換為相應(yīng)的XML字符引用nnn;。 -
'backslashreplace'用Python的反向轉(zhuǎn)義序列替換格式錯誤的數(shù)據(jù)。 -
'namereplace'(也只在編寫時支持)用\N{...}轉(zhuǎn)義序列替換不支持的字符。
newline determines how to parse newline characters from the stream. It can be None, '', '\n', '\r', and '\r\n'. It works as follows:
-
從流中讀取輸入時,如果 newline 為
None,則啟用通用換行模式。輸入中的行可以以'\n','\r'或'\r\n'結(jié)尾,這些行被翻譯成'\n'在返回呼叫者之前。如果它是'',則啟用通用換行模式,但行結(jié)尾將返回給調(diào)用者未翻譯。如果它具有任何其他合法值,則輸入行僅由給定字符串終止,并且行結(jié)尾將返回給未調(diào)用的調(diào)用者。 -
將輸出寫入流時,如果 newline 為
None,則寫入的任何'\n'字符都將轉(zhuǎn)換為系統(tǒng)默認(rèn)行分隔符 os.linesep。如果 newline 是''或'\n',則不進行翻譯。如果 newline 是任何其他合法值,則寫入的任何'\n'字符將被轉(zhuǎn)換為給定的字符串。
如果 closefd 為 False 且給出的不是文件名而是文件描述符,那么當(dāng)文件關(guān)閉時,底層文件描述符將保持打開狀態(tài)。如果給出的是文件名,則 closefd 必須為 True (默認(rèn)值),否則將觸發(fā)錯誤。
可以通過傳遞可調(diào)用的 opener 來使用自定義開啟器。然后通過使用參數(shù)( file,flags )調(diào)用 opener 獲得文件對象的基礎(chǔ)文件描述符。 opener 必須返回一個打開的文件描述符(使用 os.open as opener 時與傳遞 None 的效果相同)。
新創(chuàng)建的文件是 不可繼承的。
下面的示例使用 os.open() 函數(shù)的 dir_fd 的形參,從給定的目錄中用相對路徑打開文件:
>>> import os>>> dir_fd = os.open('somedir', os.O_RDONLY)>>> def opener(path, flags):... return os.open(path, flags, dir_fd=dir_fd)...>>> with open('spamspam.txt', 'w', opener=opener) as f:... print('This will be written to somedir/spamspam.txt', file=f)...>>> os.close(dir_fd) # don't leak a file descriptor
open() 函數(shù)
本文題目:創(chuàng)新互聯(lián)Python教程:內(nèi)置函數(shù)
URL標(biāo)題:http://m.fisionsoft.com.cn/article/dpoihje.html


咨詢
建站咨詢
