Python解釋器內(nèi)置了(le)許多可(kě)以使用的函數(shù)。它們按字母順序排列在這(zhè)裏。
| | 內(nèi)置函數(shù) | | |
---|---|---|---|---|
abs() | divmod() | input() | open() | staticmethod() |
all() | enumerate() | int() | ord() | str() |
any() | eval() | isinstance() | pow() | sum() |
basestring() | execfile() | issubclass() | print() | super() |
bin() | file() | iter() | property() | tuple() |
bool() | filter() | len() | range() | type() |
bytearray() | float() | list() | raw_input() | unichr() |
callable() | format() | locals() | reduce() | unicode() |
chr() | frozenset() | long() | reload() | vars() |
classmethod() | getattr() | map() | repr() | xrange() |
cmp() | globals() | max() | reversed() | zip() |
compile() | hasattr() | memoryview() | round() | __import__() |
complex() | hash() | min() | set() | |
delattr() | help() | next() | setattr() | |
dict() | hex() | object() | slice() | |
dir() | id() | oct() | sorted() | |
此外(wài),還有一(yī)些不再被認為(wèi)是必要(yào)的其他(tā)四個內(nèi)置的功能(néng):apply(),buffer(),coerce(),和(hé)intern()。它們記錄在非必要(yào)的內(nèi)置函數(shù)部分。
abs(x)
返回一(yī)個數(shù)字的絕對值。參數(shù)可(kě)能(néng)是一(yī)個普通(tōng)或長(cháng)整數(shù)或浮點數(shù)。如(rú)果參數(shù)是一(yī)個複數(shù),則返回其大小。
all(iterable)
返回True如(rú)果的所有元素叠代是真實的(或者如(rú)果可(kě)叠代為(wèi)空)。相當于:
def all(iterable):
for element in iterable:
if not element:
return False
return True
複制
2.5版本中的新功能(néng)。
any(iterable)
True如(rú)果叠代的任何元素為(wèi)真,則返回。如(rú)果叠代器為(wèi)空,則返回False。相當于:
def any(iterable):
for element in iterable:
if element:
return True
return False
複制
2.5版本中的新功能(néng)。
basestring()
這(zhè)個抽象類型是超str和(hé)unicode。它不能(néng)被調用或實例化,但(dàn)它可(kě)以被用來測試對象是否是實例str或unicode。isinstance(obj, basestring)相當于isinstance(obj, (str, unicode))。
2.3版本的新功能(néng)。
bin(x)
将整數(shù)轉換為(wèi)二進制字符串。結果是一(yī)個有效的Python表達式。如(rú)果x不是Python int對象,則必須定義一(yī)個__index__()返回整數(shù)的方法。
2.6版本中的新功能(néng)。
class bool([x])
返回一(yī)個布爾值,即一(yī)個True或False。x使用标準真相測試程序進行(xíng)轉換。如(rú)果x為(wèi)假或省略,則返回False; 否則返回True。bool也是一(yī)個類,它是一(yī)個子類int。類bool不能(néng)進一(yī)步子類化。它的唯一(yī)實例是False和(hé)True。
2.2.1版中的新功能(néng)。
版本2.3中更改:如(rú)果未給出參數(shù),則此函數(shù)返回False。
class bytearray([source[, encoding[, errors]]])
返回一(yī)個新的字節數(shù)組。的bytearray類是整數(shù)的範圍為(wèi)0 <= X <256,具有大部分可(kě)變序列的常規方法,在可(kě)變的序列類型描述一(yī)個可(kě)變的序列,以及,最方法str類型有,參見(jiàn)字符串方法。
可(kě)選的source參數(shù)可(kě)以用幾種不同的方式初始化數(shù)組:
如(rú)果它是unicode,則還必須給出編碼(以及可(kě)選的錯誤)參數(shù); bytearray()然後将unicode轉換為(wèi)使用的字節unicode.encode()。
如(rú)果它是一(yī)個整數(shù),則數(shù)組将具有該大小,并将用空字節進行(xíng)初始化。
如(rú)果它是符合緩沖區(qū)接口的對象,則将使用該對象的隻讀緩沖區(qū)來初始化字節數(shù)組。
如(rú)果它是可(kě)叠代的,它必須是範圍內(nèi)的整數(shù)的叠代0 <= x < 256,它們被用作(zuò)數(shù)組的初始內(nèi)容。
沒有參數(shù),就會創建一(yī)個大小為(wèi)0的數(shù)組。
2.6版本中的新功能(néng)。
callable(object)
True如(rú)果對象參數(shù)顯示為(wèi)可(kě)調用,False則返回,如(rú)果不是。如(rú)果這(zhè)返回true,那(nà)麽調用失敗仍然是可(kě)能(néng)的,但(dàn)如(rú)果它是false,調用對象将永遠不會成功。請(qǐng)注意,類是可(kě)調用的(調用一(yī)個類返回一(yī)個新的實例); 類實例可(kě)以被調用,如(rú)果他(tā)們有一(yī)個__call__()方法。
chr(i)
返回ASCII碼為(wèi)整數(shù)i的一(yī)個字符串。例如(rú),chr(97)返回字符串'a'。這(zhè)是與之相反的ord()。參數(shù)必須在0..255的範圍內(nèi)(含); ValueError如(rú)果我在這(zhè)個範圍之外(wài),會被提高。另見(jiàn)unichr()。
classmethod(function)
為(wèi)函數(shù)返回一(yī)個類方法。
類方法将類作(zuò)為(wèi)隐式第一(yī)個參數(shù)接收,就像實例方法接收實例一(yī)樣。要(yào)聲明(míng)一(yī)個類方法,使用這(zhè)個習慣用法:
class C(object):
@classmethod
def f(cls, arg1, arg2, ...):
...
複制
該@classmethod表單是一(yī)個函數(shù)裝飾器 - 有關詳細信息,請(qǐng)參閱函數(shù)定義中的函數(shù)定義說明(míng)。
它可(kě)以在類(如(rú)C.f())或實例(如(rú)C().f())上(shàng)調用。該實例被忽略,除了(le)它的類。如(rú)果為(wèi)派生類調用類方法,則派生類對象将作(zuò)為(wèi)隐含的第一(yī)個參數(shù)傳遞。
類方法與C ++或Java靜态方法不同。如(rú)果你想要(yào)這(zhè)些,請(qǐng)參閱staticmethod()本節。
有關類方法的更多信息,請(qǐng)參閱标準類型層次結構中關于标準類型層次結構的文檔。
2.2版本中的新功能(néng)。
在版本2.4中更改:添加了(le)函數(shù)裝飾器語法。
cmp(x, y)
比較兩個對象x和(hé)y,并根據結果返回一(yī)個整數(shù)。如(rú)果返回值為(wèi)負,如(rú)果x < y為(wèi)零,x == y并且嚴格為(wèi)正,則返回值為(wèi)負x > y。
compile(source, filename, mode[, flags[, dont_inherit]])
将源編譯為(wèi)代碼或AST對象。代碼對象可(kě)以由exec語句執行(xíng)或通(tōng)過調用來執行(xíng)eval()。源可(kě)以是Unicode字符串,Latin-1編碼的字符串或AST對象。ast有關如(rú)何使用AST對象的信息,請(qǐng)參閱模塊文檔。
該文件名參數(shù)應該給從(cóng)代碼讀取的文件; 如(rú)果沒有從(cóng)文件中讀取('
該模式參數(shù)指定什麽樣的代碼必須進行(xíng)編譯; 它可(kě)以是'exec',如(rú)果源包含的語句序列的,'eval'如(rú)果它由一(yī)個單一(yī)的表達的,或者'single'如(rú)果它由單個交互式聲明(míng)的(在後一(yī)種情況下(xià),計算結果為(wèi)比其他(tā)東西(xī)表達式語句None将被打印)。
可(kě)選參數(shù)flags和(hé)dont_inherit控制哪些未來語句(請(qǐng)參閱PEP 236)影響源編譯。如(rú)果兩者都(dōu)不存在(或兩者均為(wèi)零),則代碼将與正在調用的代碼中生效的那(nà)些未來語句一(yī)起編譯compile()。如(rú)果給出了(le)flags參數(shù),并且dont_inherit不是(或者是零),那(nà)麽除了(le)那(nà)些将被使用的參數(shù)之外(wài),将使用flags參數(shù)指定的将來語句。如(rú)果dont_inherit是一(yī)個非零整數(shù),那(nà)麽flags參數(shù)就是它 - 将忽略圍繞調用編譯的未來聲明(míng)。
将來的語句由可(kě)以按位或運算來指定多個語句的位指定。指定給定特征所需的位域可(kě)以作(zuò)為(wèi)模塊中實例的compiler_flag屬性找到。_Feature__future__
SyntaxError如(rú)果編譯的源無效,并且TypeError源包含空字節,則此函數(shù)會引發。
如(rú)果您想将Python代碼解析為(wèi)其AST表示形式,請(qǐng)參閱ast.parse()。
注釋
使用多行(xíng)代碼輸入'single'或'eval'模式編譯字符串時(shí),輸入必須至少(shǎo)由一(yī)個換行(xíng)符終止。這(zhè)是為(wèi)了(le)便于檢測code模塊中不完整和(hé)完整的語句。
版本2.3中更改:添加了(le)标志和(hé)dont_inherit參數(shù)。
在版本2.6中更改:支持編譯AST對象。
在版本2.7中更改:允許使用Windows和(hé)Mac換行(xíng)符。在'exec'模式下(xià)輸入也不必以換行(xíng)符結束。
class complex([real[, imag]])
返回值為(wèi)real + imag * 1j的複數(shù)或者将字符串或數(shù)字轉換為(wèi)複數(shù)。如(rú)果第一(yī)個參數(shù)是一(yī)個字符串,它将被解釋為(wèi)一(yī)個複數(shù),并且該函數(shù)必須在沒有第二個參數(shù)的情況下(xià)被調用。第二個參數(shù)不能(néng)是一(yī)個字符串。每個參數(shù)可(kě)以是任何數(shù)字類型(包括複數(shù))。如(rú)果IMAG被省略,默認為(wèi)零,并且該函數(shù)作(zuò)為(wèi)數(shù)字轉換功能(néng)等int(),long()和(hé)float()。如(rú)果兩個參數(shù)都(dōu)被省略,則返回0j。
注釋
從(cóng)字符串轉換時(shí),該字符串不得在中央+或-運算符周圍包含空格。例如(rú),complex('1+2j')很(hěn)好,但(dàn)complex('1 + 2j')引發ValueError。
複數(shù)類型用數(shù)字類型描述 - int,float,long,complex。
delattr(object, name)
這(zhè)是一(yī)個相對的setattr()。參數(shù)是一(yī)個對象和(hé)一(yī)個字符串。該字符串必須是對象屬性之一(yī)的名稱。該函數(shù)删除指定的屬性,隻要(yào)該對象允許。例如(rú),delattr(x, 'foobar')相當于del x.foobar。
class dict(**kwarg)class dict(mapping, **kwarg)class dict(iterable, **kwarg)
創建一(yī)個新的字典。該dict對象是字典類。請(qǐng)參閱dict和(hé)映射類型 - dict有關此類的文檔。
對于其他(tā)容器看(kàn)到內(nèi)置list,set以及tuple類,還有collections模塊。
dir([object])
如(rú)果沒有參數(shù),則返回當前本地(dì)作(zuò)用域中的名稱列表。使用參數(shù)嘗試返回該對象的有效屬性列表。
如(rú)果該對象有一(yī)個名為(wèi)的方法__dir__(),則該方法将被調用并且必須返回屬性列表。這(zhè)允許實現自(zì)定義__getattr__()或__getattribute__()功能(néng)的對象自(zì)定義dir()報告其屬性的方式。
如(rú)果對象沒有提供__dir__(),函數(shù)會盡最大努力從(cóng)對象的__dict__屬性(如(rú)果已定義)和(hé)其類型對象中收集信息。結果列表不一(yī)定完整,并且在對象具有自(zì)定義時(shí)可(kě)能(néng)不準确__getattr__()。
默認dir()機制對不同類型的對象的行(xíng)為(wèi)不同,因為(wèi)它試圖産生最相關的信息,而不是完整的信息:
如(rú)果對象是模塊對象,則列表包含模塊屬性的名稱。
如(rú)果對象是一(yī)個類型或類對象,則該列表包含其屬性的名稱,并遞歸地(dì)顯示其基礎的屬性。
否則,該列表包含對象的屬性名稱,其類屬性的名稱以及其類的基類的屬性的遞歸。
結果列表按字母順序排序。例如(rú):
>>> import struct
>>> dir() # show the names in the module namespace
['__builtins__', '__doc__', '__name__', 'struct']
>>> dir(struct) # show the names in the struct module
['Struct', '__builtins__', '__doc__', '__file__', '__name__',
'__package__', '_clearcache', 'calcsize', 'error', 'pack', 'pack_into',
'unpack', 'unpack_from']
>>> class Shape(object):
def __dir__(self):
return ['area', 'perimeter', 'location']
>>> s = Shape()
>>> dir(s)
['area', 'perimeter', 'location']
複制
注意
由于dir()主要(yào)是為(wèi)了(le)便于在交互式提示下(xià)使用而提供,因此它會嘗試提供一(yī)組有趣的名稱,而不是試圖提供嚴格或一(yī)緻定義的名稱集,并且其詳細行(xíng)為(wèi)可(kě)能(néng)會在各版本之間(jiān)發生變化。例如(rú),當參數(shù)是一(yī)個類時(shí),元類屬性不在結果列表中。
divmod(a, b)
以兩個(非複數(shù))數(shù)字作(zuò)為(wèi)參數(shù),并在使用長(cháng)整數(shù)時(shí)返回一(yī)對由它們的商和(hé)餘數(shù)組成的數(shù)字。使用混合操作(zuò)數(shù)類型時(shí),适用二元算術(shù)運算符的規則。對于普通(tōng)和(hé)長(cháng)整數(shù),結果與之相同(a // b, a % b)。對于浮點數(shù)的結果是(q, a % b),其中q通(tōng)常是math.floor(a / b)但(dàn)可(kě)能(néng)比1小1。在任何情況下(xià)q * b + a % b都(dōu)非常接近a,如(rú)果a % b非零,則它與b具有相同的符号,并且0 <= abs(a % b) < abs(b)。
在版本2.3中更改:不建議(yì)使用divmod()複數(shù)。
enumerate(sequence, start=0)
返回一(yī)個枚舉對象。序列必須是序列,叠代器或支持叠代的其他(tā)對象。next()返回的叠代器的方法enumerate()返回一(yī)個包含count的元組(從(cóng)start開(kāi)始,默認值為(wèi)0)以及叠代序列中獲得的值:
>>> 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 = start
for elem in sequence:
yield n, elem
n += 1
複制
2.3版本的新功能(néng)。
在版本2.6中更改:添加了(le)啓動參數(shù)。
eval(expression[, globals[, locals]])
參數(shù)是Unicode或Latin-1編碼的字符串以及可(kě)選的全局變量和(hé)本地(dì)變量。如(rú)果提供,全局變量必須是字典。如(rú)果提供,本地(dì)人(rén)可(kě)以是任何映射對象。
在版本2.4中改變:以前本地(dì)人(rén)被要(yào)求成為(wèi)一(yī)本字典。
該表達參數(shù)分析,并作(zuò)為(wèi)一(yī)個Python表達式來使用(從(cóng)技術(shù)上(shàng)來說,一(yī)個條件列表)全局和(hé)當地(dì)人(rén)的字典作(zuò)為(wèi)全局和(hé)局部名字空間(jiān)。如(rú)果globals字典存在并且缺少(shǎo)'__builtins__',則在解析表達式之前将當前全局變量複制到全局變量中。這(zhè)意味着表達式通(tōng)常可(kě)以完全訪問(wèn)标準模塊,并且傳播受限制的環境。如(rú)果省略了(le)本地(dì)字典,則默認為(wèi)全局變量__builtin__字典。如(rú)果兩個字典都(dōu)被省略,表達式會在eval()調用的環境中執行(xíng)。返回值是評估表達式的結果。語法錯誤被報告為(wèi)例外(wài)。例:
>>> x = 1
>>> print eval('x+1')
2
複制
這(zhè)個函數(shù)也可(kě)以用來執行(xíng)任意代碼對象(比如(rú)那(nà)些創建的對象compile())。在這(zhè)種情況下(xià),傳遞一(yī)個代碼對象而不是一(yī)個字符串。如(rú)果代碼對象已經被編譯'exec'為(wèi)模式參數(shù),那(nà)麽eval()返回值将是None。
提示:語句支持動态執行(xíng)exec語句。execfile()函數(shù)支持從(cóng)文件執行(xíng)語句。的globals()和(hé)locals()功能(néng)返回當前全球和(hé)本地(dì)詞典,分别,其可(kě)以是通(tōng)過以繞過使用有用eval()或execfile()。
請(qǐng)參閱有關ast.literal_eval()可(kě)以安全地(dì)使用僅包含文字的表達式評估字符串的函數(shù)。
execfile(filename[, globals[, locals]])
該函數(shù)與該exec語句類似,但(dàn)解析文件而不是字符串。它與import聲明(míng)不同之處在于它不使用模塊管理 - 它無條件地(dì)讀取文件并且不創建新的模塊。[1]
參數(shù)是一(yī)個文件名和(hé)兩個可(kě)選字典。文件被解析并評估為(wèi)一(yī)系列Python語句(類似于模塊),使用全局和(hé)本地(dì)語言字典作(zuò)為(wèi)全局和(hé)本地(dì)命名空間(jiān)。如(rú)果提供,本地(dì)人(rén)可(kě)以是任何映射對象。請(qǐng)記住,在模塊級别,全局變量和(hé)本地(dì)變量是相同的字典。如(rú)果兩個單獨的對象作(zuò)為(wèi)全局變量和(hé)本地(dì)變量傳遞,那(nà)麽代碼将被嵌入類定義中執行(xíng)。
在版本2.4中改變:以前本地(dì)人(rén)被要(yào)求成為(wèi)一(yī)本字典。
如(rú)果省略了(le)本地(dì)字典,則默認為(wèi)全局字典。如(rú)果兩個字典都(dōu)被省略,表達式會在execfile()調用的環境中執行(xíng)。返回值是None。
注釋
默認本地(dì)人(rén)的行(xíng)為(wèi)如(rú)locals()下(xià)面的功能(néng)所述:不應嘗試對默認本地(dì)人(rén)字典的修改。傳遞一(yī)個明(míng)确的當地(dì)人(rén)解釋,如(rú)果你需要(yào)看(kàn)到的代碼的作(zuò)用當地(dì)人(rén)後的功能(néng)execfile()恢複。execfile()不能(néng)可(kě)靠地(dì)用來修改一(yī)個函數(shù)的當地(dì)人(rén)。
file(name[, mode[, buffering]])
該file類型的構造函數(shù),在文件對象部分進一(yī)步描述。構造函數(shù)的參數(shù)與open()下(xià)面描述的內(nèi)置函數(shù)的參數(shù)相同。
打開(kāi)文件時(shí),最好使用open()而不是直接調用此構造函數(shù)。file更适合于類型測試(例如(rú),寫作(zuò)isinstance(f, file))。
2.2版本中的新功能(néng)。
filter(function, iterable)
構建從(cóng)這(zhè)些元素的列表叠代為(wèi)此函數(shù)返回true。可(kě)叠代可(kě)以是序列,支持叠代的容器或叠代器。如(rú)果iterable是一(yī)個字符串或一(yī)個元組,結果也具有該類型; 否則它總是一(yī)個列表。如(rú)果函數(shù)是None,則假定标識函數(shù),即删除所有可(kě)叠代的元素。
請(qǐng)注意,如(rú)果函數(shù)不是并且函數(shù)是filter(function, iterable)等價的。[item for item in iterable if function(item)]None[item for item in iterable if item]None
見(jiàn)itertools.ifilter()及itertools.ifilterfalse()此功能(néng)的叠代器版本,包括對于其中的元素篩選的變化函數(shù)返回false。
class float([x])
返回一(yī)個由數(shù)字或字符串x構造的浮點數(shù)。
如(rú)果參數(shù)是一(yī)個字符串,它必須包含一(yī)個可(kě)能(néng)帶符号的十進制或浮點數(shù),可(kě)能(néng)嵌入在空格中。參數(shù)也可(kě)以是+ | -nan或+ | -inf。否則,參數(shù)可(kě)能(néng)是一(yī)個普通(tōng)或長(cháng)整數(shù)或浮點數(shù),并返回具有相同值(在Python的浮點精度內(nèi))的浮點數(shù)。如(rú)果沒有提供參數(shù),則返回0.0。
Note
傳遞字符串時(shí),可(kě)能(néng)會返回NaN和(hé)Infinity的值,具體取決于底層的C庫。對于NaN和(hé)正或負無限,Float接受字符串nan,inf和(hé)-inf。對于NaN,情況和(hé)領導+被忽略以及領先 - 被忽略。Float總是代表NaN和(hé)無窮大,如(rú)nan,inf或-inf。
浮點類型用數(shù)字類型描述 - int,float,long,complex。
format(value[, format_spec])
将值轉換為(wèi)“格式化”表示,由format_spec控制。format_spec的解釋将取決于value參數(shù)的類型,但(dàn)是存在大多數(shù)內(nèi)置類型使用的标準格式化語法:Format Specification Mini-Language。
注釋
format(value, format_spec) merely calls value.__format__(format_spec).
2.6版本中的新功能(néng)。
class frozenset([iterable])
返回一(yī)個新的frozenset對象,可(kě)選的元素來自(zì)iterable。frozenset是一(yī)個內(nèi)置的類。請(qǐng)參閱frozenset和(hé)設置類型 - 設置,凍結關于此類的文檔。
對于其他(tā)容器看(kàn)到內(nèi)置的set,list,tuple,和(hé)dict類,還有collections模塊。
2.4版本中的新功能(néng)。
getattr(object, name[, default])
返回對象的指定屬性的值。名稱必須是字符串。如(rú)果字符串是對象屬性之一(yī)的名稱,則結果是該屬性的值。例如(rú),getattr(x, 'foobar')相當于x.foobar。如(rú)果指定的屬性不存在,則返回默認值(如(rú)果提供),否則返回AttributeError。
globals()
返回表示當前全局符号表的字典。這(zhè)總是當前模塊的字典(在函數(shù)或方法內(nèi)部,這(zhè)是定義它的模塊,而不是調用它的模塊)。
hasattr(object, name)
參數(shù)是一(yī)個對象和(hé)一(yī)個字符串。結果是True如(rú)果字符串是對象屬性之一(yī)的名稱,False如(rú)果不是。(這(zhè)是通(tōng)過調用getattr(object, name)并查看(kàn)它是否引發異常來實現的。)
hash(object)
返回對象的散列值(如(rú)果有)。哈希值是整數(shù)。它們用于在字典查找期間(jiān)快(kuài)速比較字典鍵。比較相等的數(shù)值具有相同的散列值(即使它們具有不同的類型,就像1和(hé)1.0一(yī)樣)。
help([object])
調用內(nèi)置的幫助系統。(此功能(néng)用于交互式使用。)如(rú)果未提供參數(shù),則交互式幫助系統将在解釋器控制台上(shàng)啓動。如(rú)果參數(shù)是一(yī)個字符串,那(nà)麽該字符串将被查找為(wèi)模塊,函數(shù),類,方法,關鍵字或文檔主題的名稱,并在控制台上(shàng)打印幫助頁面。如(rú)果參數(shù)是任何其他(tā)類型的對象,則會生成對象上(shàng)的幫助頁面。
該功能(néng)被模塊添加到內(nèi)置命名空間(jiān)中site。
2.2版本中的新功能(néng)。
hex(x)
将整數(shù)(任意大小)轉換為(wèi)以“0x”為(wèi)前綴的小寫十六進制字符串,例如(rú):
>>> hex(255)
'0xff'
>>> hex(-42)
'-0x2a'
>>> hex(1L)
'0x1L'
複制
如(rú)果x不是Python int或long對象,則必須定義一(yī)個返回字符串的__hex __()方法。
注意
要(yào)獲取浮點數(shù)的十六進制字符串表示形式,請(qǐng)使用該float.hex()方法。
在版本2.4中更改:以前隻返回一(yī)個無符号文字。
id(object)
返回一(yī)個對象的“身份”。這(zhè)是一(yī)個整數(shù)(或長(cháng)整數(shù)),在整個生命周期中保證這(zhè)個對象是唯一(yī)的并且是常量。兩個非重疊生命期的對象可(kě)能(néng)具有相同的id()值。
CPython實現細節:這(zhè)是內(nèi)存中對象的地(dì)址。
input([prompt])
相當于eval(raw_input(prompt))。
此功能(néng)不捕捉用戶錯誤。如(rú)果輸入不是語法有效的,SyntaxError則會提出。如(rú)果在評估過程中出現錯誤,可(kě)能(néng)會引發其他(tā)例外(wài)情況。
如(rú)果readline模塊已加載,那(nà)麽input()将使用它來提供精細的線條編輯和(hé)曆史記錄功能(néng)。
考慮使用該raw_input()函數(shù)來進行(xíng)用戶的一(yī)般輸入。
class int(x=0)class int(x, base=10)
返回由數(shù)字或字符串x構造的整數(shù)對象,0如(rú)果沒有給定參數(shù),則返回。如(rú)果x是一(yī)個數(shù)字,它可(kě)以是一(yī)個純整數(shù),一(yī)個長(cháng)整數(shù)或一(yī)個浮點數(shù)。如(rú)果x是浮點,則轉換将截斷為(wèi)零。如(rú)果參數(shù)不在整數(shù)範圍內(nèi),則該函數(shù)會返回一(yī)個長(cháng)對象。
如(rú)果X不是數(shù)字或如(rú)果基給出,則X必須是字符串或Unicode對象表示面值整數(shù)在基數(shù)基。可(kě)選地(dì),文字可(kě)以在+或之前-(沒有間(jiān)隔)并且被空白包圍。base-n文字由數(shù)字0到n-1組成,其中ato z(或Ato Z)的值為(wèi)10到35.默認基數(shù)為(wèi)10.允許的值為(wèi)0和(hé)2-36。base-2,-8和(hé)-16文字可(kě)以有選擇地(dì)以0b/ 0B,0o/ 0O/ 0或0x/0X與代碼中的整數(shù)文字一(yī)樣。基數(shù)0表示将字符串完全解釋為(wèi)整數(shù)字面值,以便實際基數(shù)為(wèi)2,8,10或16。
整數(shù)類型用數(shù)字類型 - int,float,long,complex來描述。
isinstance(object, classinfo)
如(rú)果對象參數(shù)是classinfo參數(shù)的實例或其(直接,間(jiān)接或虛拟)子類的實例,則返回true 。如(rú)果classinfo是一(yī)個類型對象(new-style class),并且object是該類型的對象或其(直接,間(jiān)接或虛拟)子類的對象,則也會返回true 。如(rú)果object不是給定類型的類實例或對象,則該函數(shù)始終返回false。如(rú)果classinfo是類或類型對象(或遞歸地(dì),其他(tā)這(zhè)樣的元組)的元組,則如(rú)果object是任何類或類型的實例,則返回true 。如(rú)果classinfo不是類,類型和(hé)這(zhè)些元組的類,類型或元組,TypeError會引發異常。
在版本2.2中更改:添加了(le)對類型信息元組的支持。
issubclass(class, classinfo)
如(rú)果返回true 類是一(yī)個子類(直接,間(jiān)接或虛拟)的CLASSINFO。一(yī)個類被認為(wèi)是它自(zì)己的一(yī)個子類。classinfo可(kě)以是類對象的元組,在這(zhè)種情況下(xià),将檢查classinfo中的每個條目。在其他(tā)情況下(xià),TypeError會引發異常。
版本2.3中更改:添加了(le)對類型信息元組的支持。
iter(o[, sentinel])
返回一(yī)個叠代器對象。根據第二個參數(shù)的存在,第一(yī)個參數(shù)被解釋得非常不同。沒有第二個參數(shù),o必須是一(yī)個支持叠代協議(yì)(__iter__()方法)的集合對象,或者它必須支持序列協議(yì)(__getitem__()整數(shù)參數(shù)開(kāi)始的方法0)。如(rú)果它不支持這(zhè)些協議(yì)中的任何一(yī)個,TypeError則會引發。如(rú)果給出了(le)第二個參數(shù)sentinel,那(nà)麽o必須是可(kě)調用的對象。在這(zhè)種情況下(xià)創建的叠代器将為(wèi)每個對其方法的調用調用o而不帶任何參數(shù)next(); 如(rú)果返回的值等于哨兵(bīng),StopIteration 将被提出,否則該值将被退回。
第二種形式的一(yī)個有用的應用iter()是讀取文件的行(xíng),直到達到某一(yī)行(xíng)。以下(xià)示例讀取文件,直到該readline()方法返回空字符串:
with open('mydata.txt') as fp:
for line in iter(fp.readline, ''):
process_line(line)
複制
New in version 2.2.
len(s)
返回對象的長(cháng)度(項目數(shù)量)。參數(shù)可(kě)以是一(yī)個序列(如(rú)字符串,字節,元組,列表或範圍)或集合(如(rú)字典,集合或凍結集合)。
class list([iterable])
返回一(yī)個列表,其項目與叠代項目的順序相同并且順序相同。可(kě)叠代可(kě)以是序列,支持叠代的容器或叠代器對象。如(rú)果可(kě)叠代已經是一(yī)個列表,則複制将被創建并返回,類似于iterable[:]。例如(rú),list('abc')退貨['a', 'b', 'c']和(hé)list( (1, 2, 3) )退貨[1, 2, 3]。如(rú)果沒有給出參數(shù),則返回一(yī)個新的空列表[]。
list是一(yī)個可(kě)變序列類型,如(rú)序列類型 - str,unicode,list,tuple,bytearray,buffer,xrange中所記錄。對于其他(tā)容器看(kàn)到內(nèi)置的dict,set以及tuple類和(hé)collections模塊。
locals()
更新并返回表示當前本地(dì)符号表的字典。locals()在功能(néng)塊中調用自(zì)由變量時(shí)會返回自(zì)由變量,但(dàn)不會在類塊中調用它們。
Note
這(zhè)本詞典的內(nèi)容不應該修改; 更改可(kě)能(néng)不會影響解釋器使用的本地(dì)變量和(hé)自(zì)由變量的值。
class long(x=0)class long(x, base=10)
返回一(yī)個由字符串或數(shù)字x構造的長(cháng)整數(shù)對象。如(rú)果參數(shù)是一(yī)個字符串,它必須包含一(yī)個可(kě)能(néng)有符号數(shù)的任意大小,可(kě)能(néng)嵌入在空格中。所述堿參數(shù)被解釋以相同的方式作(zuò)為(wèi)用于int(),當僅可(kě)以給出X是一(yī)個字符串。否則,參數(shù)可(kě)能(néng)是一(yī)個普通(tōng)或長(cháng)整數(shù)或浮點數(shù),并返回一(yī)個具有相同值的長(cháng)整數(shù)。将浮點數(shù)轉換為(wèi)整數(shù)将截斷(趨近于零)。如(rú)果沒有給出參數(shù),則返回0L。
長(cháng)類型用數(shù)字類型描述 - int,float,long,complex。
map(function, iterable, ...)
将函數(shù)應用于每個可(kě)叠代項并返回結果列表。如(rú)果傳遞額外(wài)的叠代參數(shù),函數(shù)必須采用多個參數(shù)并應用于并行(xíng)所有叠代中的項目。如(rú)果一(yī)個叠代器比另一(yī)個叠代器短,則假定它被擴展為(wèi)None項。如(rú)果函數(shù)是None,則假定身份函數(shù); 如(rú)果有多個參數(shù),則map()返回一(yī)個由包含所有可(kě)叠代對象項(一(yī)種轉置操作(zuò))的元組構成的列表。所述叠代參數(shù)可(kě)以是序列或任何叠代的對象; 結果總是一(yī)個列表。
max(iterable[, key])max(arg1, arg2, *args[, key])
返回iterable中的最大項或兩個或更多個參數(shù)中最大的項。
如(rú)果提供了(le)一(yī)個位置參數(shù),則iterable必須是非空的可(kě)叠代的(例如(rú)非空字符串,元組或列表)。叠代中最大的項目被返回。如(rú)果提供了(le)兩個或多個位置參數(shù),則返回最大的位置參數(shù)。
可(kě)選的key參數(shù)指定一(yī)個與之相同的單參數(shù)排序函數(shù)list.sort()。的關鍵參數(shù),如(rú)果提供的話,必須在關鍵字的形式(例如(rú),max(a,b,c,key=func))。
在版本2.5中進行(xíng)了(le)更改:添加了(le)對可(kě)選鍵參數(shù)的支持。
memoryview(obj)
返回從(cóng)給定參數(shù)創建的“內(nèi)存視(shì)圖”對象。有關更多信息,請(qǐng)參閱memoryview類型。
min(iterable[, key])min(arg1, arg2, *args[, key])
返回可(kě)叠代中的最小項或兩個或更多個參數(shù)中的最小項。
如(rú)果提供了(le)一(yī)個位置參數(shù),則iterable必須是非空的可(kě)叠代的(例如(rú)非空字符串,元組或列表)。叠代中的最小項返回。如(rú)果提供兩個或多個位置參數(shù),則返回最小的位置參數(shù)。
可(kě)選的key參數(shù)指定一(yī)個與之相同的單參數(shù)排序函數(shù)list.sort()。的關鍵參數(shù),如(rú)果提供的話,必須在關鍵字的形式(例如(rú),min(a,b,c,key=func))。
在版本2.5中進行(xíng)了(le)更改:添加了(le)對可(kě)選鍵參數(shù)的支持。
next(iterator[, default])
通(tōng)過調用它的方法從(cóng)叠代器中檢索下(xià)一(yī)個項目next()。如(rú)果給出了(le)默認值,則在叠代器用盡時(shí)返回,否則返回StopIteration。
2.6版本中的新功能(néng)。
class object
返回一(yī)個新的無特征的對象。object是所有新風(fēng)格課程的基礎。它具有所有新樣式類的常見(jiàn)方法。
2.2版本中的新功能(néng)。
版本2.3中更改:此函數(shù)不接受任何參數(shù)。以前,它接受了(le)論據,但(dàn)忽略了(le)它們。
oct(x)
将整數(shù)(任何大小)轉換為(wèi)八進制字符串。結果是一(yī)個有效的Python表達式。
在版本2.4中更改:以前隻返回一(yī)個無符号文字。
open(name[, mode[, buffering]])
打開(kāi)一(yī)個文件,返回file文件對象部分中描述的類型的對象。如(rú)果文件無法打開(kāi),IOError則引發。打開(kāi)文件時(shí),最好使用open()而不是file直接調用構造函數(shù)。
前兩個參數(shù)與stdio's' 相同fopen():name是要(yào)打開(kāi)的文件名,mode是一(yī)個字符串,指示文件如(rú)何打開(kāi)。
模式最常用的值是'r'讀取,'w'寫入(如(rú)果文件已存在,則截斷文件)和(hé)'a'附加文件(在某些 Unix系統上(shàng),這(zhè)意味着所有寫入都(dōu)附加到文件末尾,而不管當前的搜索位置)。如(rú)果省略模式,則默認為(wèi)'r'。默認設置是使用文本模式,'\n'在寫入時(shí)可(kě)以将字符轉換為(wèi)平台特定的表示,然後重新讀取。因此,打開(kāi)二進制文件時(shí),你應該追加'b'到模式值以二進制方式打開(kāi)該文件,這(zhè)将提高便攜性。(追加'b'即使在系統沒有對二進制文本和(hé)文本文件進行(xíng)不同的處理時(shí),它也是有用的)。請(qǐng)參閱下(xià)面的模式的更多可(kě)能(néng)值。
可(kě)選的緩沖參數(shù)指定文件所需的緩沖區(qū)大小:0表示無緩沖,1表示緩沖行(xíng),任何其他(tā)正值意味着使用(大約)該緩沖區(qū)大小(以字節為(wèi)單位)。負緩沖意味着使用系統默認值,通(tōng)常為(wèi)tty設備進行(xíng)線路緩沖,并為(wèi)其他(tā)文件進行(xíng)完全緩沖。如(rú)果省略,則使用系統默認值。[2]
模式'r+','w+'并'a+'打開(kāi)文件進行(xíng)更新(讀寫); 注意'w+'截斷該文件。'b'在區(qū)分二進制和(hé)文本文件的系統上(shàng)追加到以二進制模式打開(kāi)文件的模式; 在沒有這(zhè)種區(qū)别的系統上(shàng),添加'b'無效。
除了(le)标準fopen()值模式可(kě)能(néng)是'U'或'rU'。Python通(tōng)常使用通(tōng)用換行(xíng)符支持來構建; 提供'U'将文件作(zuò)為(wèi)文本文件打開(kāi),但(dàn)行(xíng)可(kě)以通(tōng)過以下(xià)任何一(yī)種方式終止:Unix行(xíng)尾約定'\n',Macintosh約定'\r'或Windows約定'\r\n'。所有這(zhè)些外(wài)部表示都(dōu)被'\n'Python程序看(kàn)到。如(rú)果沒有通(tōng)用換行(xíng)符支持Python的內(nèi)置模式具有'U'相同普通(tōng)的文本模式。需要(yào)注意的是文件對象,因此開(kāi)了(le)也有稱為(wèi)屬性newlines,其具有的價值None(如(rú)果沒有換行(xíng)目前尚未看(kàn)到)'\n','\r','\r\n',或者包含所有可(kě)見(jiàn)的新行(xíng)類型的元組。
Python的強制執行(xíng)方式,剝離後'U',開(kāi)始'r','w'或'a'。
Python提供了(le)很(hěn)多文件處理模塊,包括fileinput,os,os.path,tempfile,和(hé)shutil。
在版本2.5中更改:引入模式字符串的第一(yī)個字母的限制。
ord(c)
給定一(yī)個長(cháng)度為(wèi)1的字符串,當參數(shù)是一(yī)個unicode對象時(shí)返回一(yī)個表示字符的Unicode代碼點的整數(shù),或者當參數(shù)是一(yī)個8位字符串時(shí)返回字節的值。例如(rú),ord('a')返回整數(shù)97,ord(u'\u2020')返回8224。這(zhè)與chr()8位字符串和(hé)unichr()unicode對象相反。如(rú)果給出了(le)一(yī)個unicode參數(shù)并且Python是使用UCS2 Unicode編譯的,那(nà)麽該字符的代碼點必須在0到65535之間(jiān) 否則字符串長(cháng)度是兩個,并且a TypeError會被提出。
pow(x, y[, z])
将x返回給y ; 如(rú)果z存在,則将x返回給y,模z(比其更有效地(dì)計算pow(x, y) % z)。雙參數(shù)形式pow(x, y)相當于使用權力運算符:x**y。
參數(shù)必須有數(shù)字類型。對于混合操作(zuò)數(shù)類型,适用于二元算術(shù)運算符的強制規則。對于int和(hé)長(cháng)整型操作(zuò)數(shù),除非第二個參數(shù)為(wèi)負數(shù),否則結果與操作(zuò)數(shù)(強制後)的類型相同; 在這(zhè)種情況下(xià),所有參數(shù)都(dōu)将轉換為(wèi)浮點數(shù)并傳遞浮點結果。例如(rú),10**2返回100,但(dàn)10**-2返回0.01。(最後一(yī)個特性是在Python 2.2中添加的,在Python 2.1和(hé)之前的版本中,如(rú)果兩個參數(shù)都(dōu)是整數(shù)類型,而第二個參數(shù)是負數(shù),則會引發異常。)如(rú)果第二個參數(shù)為(wèi)負數(shù),則必須省略第三個參數(shù)。如(rú)果z存在,x和(hé)y必須是整數(shù)類型,y必須是非負的。(這(zhè)個限制是在Python 2.2中添加的,在Python 2.1和(hé)之前的版本中,pow()根據浮點舍入事故,浮動三個參數(shù)返回了(le)依賴于平台的結果。)
print(*objects, sep=' ', end='\n', file=sys.stdout)
将對象打印到流文件中,以sep分隔,然後以end結尾。sep,end和(hé)file(如(rú)果存在)必須作(zuò)為(wèi)關鍵字參數(shù)給出。
所有非關鍵字參數(shù)都(dōu)會轉換為(wèi)字符串str(),并寫入流中,然後由sep分隔并結尾。無論九月和(hé)年(nián)底必須是字符串; 他(tā)們也可(kě)以None,這(zhè)意味着使用默認值。如(rú)果沒有任何對象,print()隻會寫結束。
文件參數(shù)必須是與對象write(string)方法; 如(rú)果它不存在或None,sys.stdout将被使用。輸出緩沖由文件決定。使用file.flush()保證,用于在屏幕上(shàng)的實例,眼前的外(wài)觀。
注釋
由于名稱print被識别為(wèi)print語句,因此該函數(shù)通(tōng)常不可(kě)用作(zuò)為(wèi)內(nèi)置函數(shù)。要(yào)禁用語句并使用該print()函數(shù),請(qǐng)在模塊的頂部使用這(zhè)個future語句:
from __future__ import print_function
複制
2.6版本中的新功能(néng)。
class property([fget[, fset[, fdel[, doc]]]])
返回新樣式類 es(從(cóng)中派生的類object)的屬性屬性。
fget是獲取屬性值的函數(shù)。fset是用于設置屬性值的函數(shù)。fdel是删除屬性值的功能(néng)。然後doc為(wèi)該屬性創建一(yī)個文檔字符串。
一(yī)個典型的用途是定義一(yī)個托管屬性x:
class C(object):
def __init__(self):
self._x = None
def getx(self):
return self._x
def setx(self, value):
self._x = value
def delx(self):
del self._x
x = property(getx, setx, delx, "I'm the 'x' property.")
複制
如(rú)果c是C的一(yī)個實例,c.x将調用getter,c.x = value将調用setter和(hé)del c.xdeleter。
如(rú)果給定,doc将是屬性屬性的文檔字符串。否則,該屬性将複制fget的文檔字符串(如(rú)果存在)。這(zhè)使得它能(néng)夠很(hěn)容易地(dì)創建隻讀屬性使用property()作(zuò)為(wèi)裝飾:
class Parrot(object):
def __init__(self):
self._voltage = 100000
@property
def voltage(self):
"""Get the current voltage."""
return self._voltage
複制
該@property裝飾變成的voltage()方法變成“吸”為(wèi)隻讀具有相同名稱的屬性,并将其設置的文檔字符串的電壓為(wèi)“獲取當前的電壓。”
屬性對象具有getter,setter和(hé)deleter可(kě)用作(zuò)裝飾器的方法,這(zhè)些裝飾器用相應的存取器函數(shù)設置為(wèi)裝飾函數(shù)來創建屬性的副本。這(zhè)可(kě)以用一(yī)個例子來解釋:
class C(object):
def __init__(self):
self._x = None
@property
def x(self):
"""I'm the 'x' property."""
return self._x
@x.setter
def x(self, value):
self._x = value
@x.deleter
def x(self):
del self._x
複制
此代碼與第一(yī)個示例完全等效。一(yī)定要(yào)賦予與原始屬性同名的附加功能(néng)(x在這(zhè)種情況下(xià))。
返回的屬性對象也有屬性fget,fset以及fdel相對應的構造函數(shù)的參數(shù)。
2.2版本中的新功能(néng)。
改變在2.5版本:使用fget的文檔字符串,如(rú)果沒有DOC給出。
改變在2.6版本:在getter,setter和(hé)deleter添加屬性。
range(stop)range(start, stop[, step])
這(zhè)是一(yī)個多功能(néng)的函數(shù)來創建包含算術(shù)級數(shù)的列表。它最常用于for循環中。參數(shù)必須是純整數(shù)。如(rú)果省略step參數(shù),則默認為(wèi)1。如(rú)果省略start參數(shù),則默認為(wèi)0。完整的表單返回一(yī)個普通(tōng)整數(shù)列表[start, start + step, start + 2 * step, ...]。如(rú)果步驟是肯定的,最後一(yī)個元素是最大的start + i * step小于停止 ; 如(rú)果step是負數(shù),最後一(yī)個元素是start + i * step大于stop的最小元素。步驟不能(néng)為(wèi)零(否則ValueError會引發)。例:
>>> range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range(1, 11)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> range(0, 30, 5)
[0, 5, 10, 15, 20, 25]
>>> range(0, 10, 3)
[0, 3, 6, 9]
>>> range(0, -10, -1)
[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
>>> range(0)
[]
>>> range(1, 0)
[]
複制
raw_input([prompt])
如(rú)果提示參數(shù)存在,則将其寫入标準輸出而沒有尾随換行(xíng)符。然後該函數(shù)從(cóng)輸入中讀取一(yī)行(xíng),将其轉換為(wèi)一(yī)個字符串(剝離尾随的換行(xíng)符),然後返回該行(xíng)。當EOF被讀取時(shí),EOFError被提出。例:
>>> s = raw_input('--> ')
--> Monty Python's Flying Circus
>>> s
"Monty Python's Flying Circus"
複制
如(rú)果readline模塊已加載,那(nà)麽raw_input()将使用它來提供精細的線條編輯和(hé)曆史記錄功能(néng)。
reduce(function, iterable[, initializer])
應用功能(néng)的兩個參數(shù)來累計的項目叠代,由左到右,從(cóng)而減少(shǎo)可(kě)叠代為(wèi)單個值。例如(rú),reduce(lambda x, y: x+y, [1, 2, 3, 4, 5])計算((((1+2)+3)+4)+5)。左邊的說法,X,是指累積值和(hé)正确的說法,ÿ,是從(cóng)更新值叠代。如(rú)果可(kě)選初始值設定項存在,它将放置在計算中可(kě)叠代項的前面,并在叠代項為(wèi)空時(shí)用作(zuò)默認值。如(rú)果初始化程序沒有給出并且叠代隻包含一(yī)個項目,則返回第一(yī)個項目。大緻相當于:
def reduce(function, iterable, initializer=None):
it = iter(iterable)
if initializer is None:
try:
initializer = next(it)
except StopIteration:
raise TypeError('reduce() of empty sequence with no initial value')
accum_value = initializer
for x in it:
accum_value = function(accum_value, x)
return accum_value
複制
reload(module)
重新加載以前導入的模塊。參數(shù)必須是模塊對象,所以它必須在之前成功導入。如(rú)果您已經使用外(wài)部編輯器編輯了(le)模塊源文件,并且希望在不離開(kāi)Python解釋器的情況下(xià)嘗試新版本,這(zhè)将非常有用。返回值是模塊對象(與模塊參數(shù)相同)。
When reload(module) is executed:
重新編譯Python模塊的代碼并重新執行(xíng)模塊級代碼,定義一(yī)組綁定到模塊字典中名稱的新對象。init擴展模塊的功能(néng)不是第二次調用。
與Python中的所有其他(tā)對象一(yī)樣,舊(jiù)對象隻有在其引用計數(shù)降至零後才會回收。
模塊名稱空間(jiān)中的名稱将更新為(wèi)指向任何新的或更改的對象。
對舊(jiù)對象的其他(tā)引用(例如(rú)模塊外(wài)部的名稱)不會反彈以引用新對象,并且如(rú)果需要(yào),則必須在它們出現的每個命名空間(jiān)中進行(xíng)更新。
還有一(yī)些其他(tā)警告:
當模塊重新加載時(shí),其字典(包含模塊的全局變量)将被保留。名稱的重新定義将覆蓋舊(jiù)的定義,所以這(zhè)通(tōng)常不是問(wèn)題。如(rú)果新版本的模塊未定義舊(jiù)版本定義的名稱,則舊(jiù)定義将保留。如(rú)果該模塊維護全局表或對象緩存,則該特性可(kě)用于模塊的優勢 - 如(rú)果需要(yào)try,可(kě)使用語句測試表的存在并跳(tiào)過其初始化:
try:
cache
except NameError:
cache = {}
複制
重新加載內(nèi)置或動态加載的模塊通(tōng)常不是很(hěn)有用。重裝sys,__main__,builtins不建議(yì)和(hé)其他(tā)關鍵模塊。在許多情況下(xià),擴展模塊并不是設計成多次初始化的,并且在重新加載時(shí)可(kě)能(néng)會以任意方式失敗。
如(rú)果一(yī)個模塊使用from... 從(cóng)另一(yī)個模塊導入對象import,調用reload()另一(yī)個模塊不會重新定義從(cóng)它導入的對象 - 解決這(zhè)個問(wèn)題的方法之一(yī)是重新執行(xíng)from語句,另一(yī)個是使用import限定名稱(模塊。*名稱*)來代替。
如(rú)果一(yī)個模塊實例化一(yī)個類的實例,重新加載定義類的模塊不會影響實例的方法定義 - 它們繼續使用舊(jiù)的類定義。派生類也是如(rú)此。
repr(object)
返回一(yī)個包含對象可(kě)打印表示的字符串。這(zhè)與轉換(反向引号)産生的價值相同。能(néng)夠以普通(tōng)功能(néng)訪問(wèn)此操作(zuò)有時(shí)很(hěn)有用。對于許多類型,此函數(shù)嘗試返回一(yī)個字符串,該字符串在傳遞時(shí)會産生具有相同值的對象eval(),否則該表示是一(yī)個用尖括号括起來的字符串,其中包含對象類型的名稱以及附加信息通(tōng)常包括對象的名稱和(hé)地(dì)址。一(yī)個類可(kě)以通(tōng)過定義一(yī)個__repr__()方法來控制這(zhè)個函數(shù)為(wèi)其實例返回的內(nèi)容。
reversed(seq)
返回一(yī)個反向叠代器。seq必須是一(yī)個具有__reversed__()方法或支持序列協議(yì)的對象(__len__()方法和(hé)__getitem__()整數(shù)參數(shù)始于的方法0)。
2.4版本中的新功能(néng)。
在版本2.6中更改:增加了(le)編寫自(zì)定義__reversed__()方法的可(kě)能(néng)性。
round(number[, ndigits])
返回浮點值數(shù)四舍五入到ndigits小數(shù)點後的數(shù)字。如(rú)果ndigits被忽略,它默認為(wèi)零。結果是一(yī)個浮點數(shù)。數(shù)值四舍五入為(wèi)功率減去ndigits的10的最接近倍數(shù); 如(rú)果兩個倍數(shù)同樣接近,則四舍五入從(cóng)0開(kāi)始(例如(rú),round(0.5)is 1.0和(hé)round(-0.5)is -1.0)。
注釋
round()對于浮動的行(xíng)為(wèi)可(kě)能(néng)會令人(rén)驚訝:例如(rú),round(2.675, 2)給出2.67而不是預期的2.68。這(zhè)不是一(yī)個錯誤:這(zhè)是由于大多數(shù)小數(shù)不能(néng)完全表示為(wèi)浮點數(shù)的結果。有關更多信息,請(qǐng)參見(jiàn)浮點算術(shù):問(wèn)題和(hé)限制。
class set([iterable])
返回一(yī)個新的set對象,可(kě)選的元素來自(zì)iterable。set是一(yī)個內(nèi)置的類。請(qǐng)參閱set和(hé)設置類型 - 設置,凍結關于此類的文檔。
對于其他(tā)容器看(kàn)到內(nèi)置的frozenset,list,tuple,和(hé)dict類,還有collections模塊。
2.4版本中的新功能(néng)。
setattr(object, name, value)
這(zhè)是與之相對的getattr()。參數(shù)是一(yī)個對象,一(yī)個字符串和(hé)一(yī)個任意值。該字符串可(kě)以命名現有的屬性或新的屬性。如(rú)果該對象允許,該函數(shù)将該值分配給該屬性。例如(rú),setattr(x, 'foobar', 123)相當于x.foobar = 123。
class slice(stop)class slice(start, stop[, step])
返回表示由指定的索引集的切片對象range(start, stop, step)。在啓動和(hé)步參數(shù)默認為(wèi)None。切片對象具有隻讀數(shù)據屬性start,stop并且step僅返回參數(shù)值(或其默認值)。他(tā)們沒有其他(tā)明(míng)确的功能(néng); 然而,它們被Numerical Python和(hé)其他(tā)第三方擴展使用。當使用擴展索引語法時(shí),也會生成切片對象。例如(rú):a[start:stop:step]或a[start:stop, i]。查看(kàn)itertools.islice()返回叠代器的備用版本。
sorted(iterable[, cmp[, key[, reverse]]])
從(cóng)叠代中的項目中返回一(yī)個新的排序列表。
可(kě)選參數(shù)cmp,key和(hé)reverse與該list.sort()方法的含義相同(在Mutable Sequence Types部分中進行(xíng)了(le)介紹)。
cmp指定兩個參數(shù)(可(kě)叠代元素)的自(zì)定義比較函數(shù),根據第一(yī)個參數(shù)是否小于,等于或大于第二個參數(shù),它應返回負數(shù),零或正數(shù):cmp=lambda x,y: cmp(x.lower(), y.lower())。默認值是None。
key指定一(yī)個用于從(cóng)每個列表元素中提取比較鍵的參數(shù)的函數(shù):key=str.lower。默認值是None(直接比較元素)。
reverse是一(yī)個布爾值。如(rú)果設置為(wèi)True,則列表元素按照每個比較被颠倒的順序進行(xíng)排序。
通(tōng)常,關鍵和(hé)反向轉換過程比指定等效的cmp函數(shù)要(yào)快(kuài)得多。這(zhè)是因為(wèi)對于每個列表元素,cmp被多次調用,而按鍵和(hé)反向觸摸每個元素隻有一(yī)次。用functools.cmp_to_key()一(yī)個老(lǎo)式的轉換CMP功能(néng)的關鍵功能(néng)。
內(nèi)置sorted()功能(néng)保證穩定。如(rú)果确保不會更改比較相等的元素的相對順序,則排序是穩定的 - 這(zhè)對于多次排序(例如(rú),按部門排序,然後按薪級)進行(xíng)排序很(hěn)有幫助。
有關排序示例和(hé)簡要(yào)的排序教程,請(qǐng)參閱對如(rú)何排序。
2.4版本中的新功能(néng)。
staticmethod(function)
為(wèi)函數(shù)返回一(yī)個靜态方法。
靜态方法不會收到隐式的第一(yī)個參數(shù)。要(yào)聲明(míng)一(yī)個靜态方法,使用這(zhè)個習慣用法:
class C(object):
@staticmethod
def f(arg1, arg2, ...):
...
複制
該@staticmethod表單是一(yī)個函數(shù)裝飾器 - 有關詳細信息,請(qǐng)參閱函數(shù)定義中的函數(shù)定義說明(míng)。
它可(kě)以在類(如(rú)C.f())或實例(如(rú)C().f())上(shàng)調用。該實例被忽略,除了(le)它的類。
Python中的靜态方法類似于Java或C ++中的方法。另請(qǐng)參閱classmethod()有關創建備用類構造函數(shù)的變體。
有關靜态方法的更多信息,請(qǐng)參閱标準類型層次結構中标準類型層次結構的文檔。
2.2版本中的新功能(néng)。
在版本2.4中更改:添加了(le)函數(shù)裝飾器語法。
class str(object='')
返回一(yī)個包含對象的可(kě)打印表示的字符串。對于字符串,這(zhè)會返回字符串本身。不同之處repr(object)在于,str(object)并不總是嘗試返回可(kě)接受的字符串eval(); 其目标是返回一(yī)個可(kě)打印的字符串。如(rú)果沒有給出參數(shù),則返回空字符串''。
有關字符串的更多信息,請(qǐng)參閱序列類型 - str,unicode,list,tuple,bytearray,buffer,描述序列功能(néng)的xrange(字符串是序列)以及字符串方法部分中描述的字符串特定方法。要(yào)輸出格式化的字符串,請(qǐng)使用%字符串格式操作(zuò)部分中描述的模闆字符串或運算符。另外(wài)請(qǐng)參閱字符串服務部分。另見(jiàn)unicode()。
sum(iterable[, start])
資金(jīn)開(kāi)始和(hé)的項目叠代由左到右,并返回總。開(kāi)始默認為(wèi)0。該叠代的項目通(tōng)常是數(shù)字,起始值不允許是一(yī)個字符串。
對于一(yī)些使用情況,有很(hěn)好的選擇sum()。連接字符串序列的首選方法是通(tōng)過調用''.join(sequence)。要(yào)以擴展精度添加浮點值,請(qǐng)參閱math.fsum()。要(yào)連接一(yī)系列叠代,請(qǐng)考慮使用itertools.chain()。
2.3版本的新功能(néng)。
super(type[, object-or-type])
返回一(yī)個代理對象,委托方法調用到父母或兄弟姐(jiě)妹類的類型。這(zhè)對于訪問(wèn)在類中被覆蓋的繼承方法很(hěn)有用。getattr()除了(le)類型本身被跳(tiào)過之外(wài),搜索順序與使用的順序相同。
該類型的__mro__屬性列出了(le)兩者和(hé)使用的方法解析搜索順序。該屬性是動态的,隻要(yào)繼承層次更新就可(kě)以更改。getattr()super()
如(rú)果省略第二個參數(shù),則返回的超級對象是未綁定的。如(rú)果第二個參數(shù)是一(yī)個對象,則isinstance(obj, type)必須為(wèi)真。如(rú)果第二個參數(shù)是一(yī)個類型,則issubclass(type2, type)必須為(wèi)true(這(zhè)對于類方法很(hěn)有用)。
注釋
super()隻适用于新式類。
super有兩種典型的用例。在具有單一(yī)繼承的類層次結構中,super可(kě)以用于引用父類而不顯式命名它們,從(cóng)而使代碼更易于維護。這(zhè)種用法與其他(tā)編程語言中超級用法非常類似。
第二個用例是在動态執行(xíng)環境中支持協作(zuò)式多重繼承。這(zhè)個用例是Python獨有的,在靜态編譯的語言或僅支持單一(yī)繼承的語言中找不到。這(zhè)使得在多個基類實現相同方法的情況下(xià)實現“菱形圖”成為(wèi)可(kě)能(néng)。良好的設計規定,這(zhè)種方法在每種情況下(xià)都(dōu)具有相同的調用簽名(因為(wèi)調用順序是在運行(xíng)時(shí)确定的,因為(wèi)該順序适用于類層次結構中的更改,并且因為(wèi)該順序可(kě)以包含運行(xíng)時(shí)未知的同級類)。
對于這(zhè)兩種用例,典型的超類調用如(rú)下(xià)所示:
class C(B):
def method(self, arg):
super(C, self).method(arg)
複制
請(qǐng)注意,它super()是作(zuò)為(wèi)顯式點狀屬性查找的綁定過程的一(yī)部分實現的,例如(rú)super().__getitem__(name)。它通(tōng)過實現自(zì)己的__getattribute__()方法以可(kě)預測的順序搜索類,支持協作(zuò)多重繼承。因此,super()對于使用語句或運算符(如(rú),)的隐式查找,未定義super()[name]。
另請(qǐng)注意,super()并不限于使用內(nèi)部方法。這(zhè)兩個參數(shù)形式完全指定了(le)參數(shù),并提供了(le)适當的參考。
有關如(rú)何使用設計協作(zuò)類的實用建議(yì)super(),請(qǐng)參閱使用super()的指南。
2.2版本中的新功能(néng)。
tuple([iterable])
返回一(yī)個元組,其元素與iterable的元素相同并且順序相同。可(kě)叠代可(kě)以是序列,支持叠代的容器或叠代器對象。如(rú)果可(kě)叠代已經是一(yī)個元組,它将不會被返回。例如(rú),tuple('abc')返回('a', 'b', 'c')和(hé)tuple([1, 2, 3])返回(1, 2, 3)。如(rú)果沒有給出任何參數(shù),則返回一(yī)個新的空元組,()。
tuple是一(yī)個不可(kě)變的序列類型,如(rú)序列類型 - str,unicode,list,tuple,bytearray,buffer,xrange中所記錄。對于其他(tā)容器看(kàn)到內(nèi)置的dict,list以及set類和(hé)collections模塊。
class type(object)class type(name, bases, dict)
使用一(yī)個參數(shù),返回一(yī)個對象的類型。返回值是一(yī)個類型對象。isinstance()建議(yì)使用內(nèi)置函數(shù)來測試對象的類型。
有三個參數(shù),返回一(yī)個新的類型對象。這(zhè)實質上(shàng)是class聲明(míng)的一(yī)種動态形式。該名字符串類名,并成為(wèi)__name__屬性; 所述堿元組逐條列出的基類和(hé)成為(wèi)__bases__屬性; 和(hé)字典的字典是包含用于類定義體的命名空間(jiān),成為(wèi)__dict__屬性。例如(rú),以下(xià)兩條語句創建相同的type對象:
>>> class X(object):
... a = 1
...
>>> X = type('X', (object,), dict(a=1))
複制
2.2版本中的新功能(néng)。
unichr(i)
返回Unicode代碼為(wèi)整數(shù)i的一(yī)個字符的Unicode字符串。例如(rú),unichr(97)返回字符串u'a'。這(zhè)是ord()Unicode字符串的反例。參數(shù)的有效範圍取決于Python的配置方式 - 它可(kě)以是UCS2 0..0xFFFF或UCS4 0..0x10FFFF。ValueError否則會被提出。對于ASCII和(hé)8位字符串請(qǐng)參見(jiàn)chr()。
2.0版本中的新功能(néng)。
unicode(object='')unicode(object[, encoding[, errors]])
使用以下(xià)某種模式返回Unicode字符串版本的對象:
如(rú)果給出了(le)編碼和(hé)/或錯誤,unicode()則将使用用于編碼的編解碼器對可(kě)以是8位字符串或字符緩沖區(qū)的對象進行(xíng)解碼。該編碼參數(shù)是給出的編碼的名稱的字符串; 如(rú)果編碼未知,LookupError則引發。錯誤處理根據錯誤完成; 這(zhè)指定了(le)對輸入編碼中無效字符的處理。如(rú)果錯誤是'strict'(默認),ValueError則錯誤引發a ,而錯誤的值'ignore'會被默默忽略,并且值'replace'會導緻官方的Unicode替換字符,U+FFFD,用于替換無法解碼的輸入字符。另請(qǐng)參閱codecs模塊。
如(rú)果沒有給出可(kě)選參數(shù),unicode()将模仿str()除了(le)返回Unicode字符串而不是8位字符串之外(wài)的行(xíng)為(wèi)。更确切地(dì)說,如(rú)果object是一(yī)個Unicode字符串或子類,它将返回該Unicode字符串,而不需要(yào)應用任何額外(wài)的解碼。
對于提供__unicode__()方法的對象,它會調用這(zhè)個沒有參數(shù)的方法來創建一(yī)個Unicode字符串。對于所有其他(tā)對象,請(qǐng)求8位字符串版本或表示,然後使用編解碼器将'strict'模式中的默認編碼轉換為(wèi)Unicode字符串。
有關Unicode字符串的更多信息,請(qǐng)參閱序列類型 - str,unicode,list,tuple,bytearray,buffer,描述序列功能(néng)的xrange(Unicode字符串是序列)以及字符串方法部分中描述的字符串特定的方法。要(yào)輸出格式化的字符串,請(qǐng)使用%字符串格式操作(zuò)部分中描述的模闆字符串或運算符。另外(wài)請(qǐng)參閱字符串服務部分。另見(jiàn)str()。
2.0版本中的新功能(néng)。
在版本2.2中更改:支持__unicode__()添加。
vars([object])
使用__dict__屬性返回模塊,類,實例或任何其他(tā)對象的__dict__屬性。
諸如(rú)模塊和(hé)實例之類的對象具有可(kě)更新__dict__屬性; 然而,其他(tā)對象可(kě)能(néng)會對其__dict__屬性進行(xíng)寫入限制(例如(rú),新式類使用dictproxy來防止直接更新字典)。
沒有争論,vars()就像locals()。請(qǐng)注意,本地(dì)字典僅用于讀取,因為(wèi)本地(dì)字典的更新被忽略。
xrange(stop)xrange(start, stop[, step])
這(zhè)個函數(shù)非常類似range(),但(dàn)返回一(yī)個xrange對象而不是一(yī)個列表。這(zhè)是一(yī)種不透明(míng)的序列類型,與相應的列表産生相同的值,而不是實際同時(shí)存儲它們。的優勢xrange()比range()是最小的(因為(wèi)xrange()仍然有創造價值的時(shí)候問(wèn)他(tā)們)當一(yī)個非常大範圍使用的內(nèi)存饑渴機上(shàng)或當所有範圍的元素都(dōu)從(cóng)來沒有使用過(如(rú)當環路除通(tōng)常以終止break)。有關xrange對象的更多信息,請(qǐng)參閱XRange類型和(hé)序列類型 - str,unicode,列表,元組,bytearray,緩沖區(qū),xrange。
CPython實現細節: xrange()旨在簡單快(kuài)速。為(wèi)了(le)實現這(zhè)一(yī)點,實現可(kě)能(néng)會施加限制。Python的C實現将所有參數(shù)限制為(wèi)本地(dì)C long(“short”Python整數(shù)),并且還要(yào)求元素的數(shù)量适合本地(dì)C long。如(rú)果需要(yào)更大的範圍,可(kě)以使用itertools模塊制作(zuò)替代版本:islice(count(start, step), (stop-start+step-1+2*(step<0))//step)。
zip([iterable, ...])
這(zhè)個函數(shù)返回一(yī)個元組列表,其中第i個元組包含來自(zì)每個參數(shù)序列或叠代的第i個元素。返回的列表的長(cháng)度被截斷為(wèi)最短參數(shù)序列的長(cháng)度。當有多個長(cháng)度相同的參數(shù)時(shí),與初始參數(shù)zip()類似。使用單個序列參數(shù),它将返回1元組列表。沒有參數(shù),它返回一(yī)個空列表。map()None
可(kě)保證叠代的從(cóng)左到右的評估順序。這(zhè)使得使用一(yī)個将數(shù)據序列聚類為(wèi)n長(cháng)度組的成語成為(wèi)可(kě)能(néng)zip(*[iter(s)]*n)。
zip()與*運營商一(yī)起可(kě)以用來解壓一(yī)個列表:
>>> x = [1, 2, 3]
>>> y = [4, 5, 6]
>>> zipped = zip(x, y)
>>> zipped
[(1, 4), (2, 5), (3, 6)]
>>> x2, y2 = zip(*zipped)
>>> x == list(x2) and y == list(y2)
True
複制
2.0版本中的新功能(néng)。
在版本2.4中更改:以前,zip()至少(shǎo)需要(yào)一(yī)個參數(shù),并zip()提出一(yī)個TypeError而不是返回一(yī)個空列表。
__import__(name[, globals[, locals[, fromlist[, level]]]])
注釋
與日常Python編程不同,這(zhè)是一(yī)種高級功能(néng)importlib.import_module()。
該函數(shù)由import語句調用。它可(kě)以被替換(通(tōng)過導入__builtin__模塊并賦值__builtin__.__import__)以改變import語句的語義,但(dàn)現在通(tōng)常使用導入鈎子更簡單(參見(jiàn)PEP 302)。直接使用__import__()是很(hěn)少(shǎo)見(jiàn)的,除非您想要(yào)導入名稱僅在運行(xíng)時(shí)已知的模塊。
該函數(shù)導入模塊名稱,可(kě)能(néng)使用給定的全局變量和(hé)局部變量來确定如(rú)何解釋包上(shàng)下(xià)文中的名稱。在fromlist裏給出了(le)應該從(cóng)給出的模塊導入的對象或子的名字命名。标準實現完全不使用它的本地(dì)參數(shù),并且僅使用它的全局變量來确定import語句的包上(shàng)下(xià)文。
級别指定是使用絕對導入還是相對導入。默認值是-1指示絕對和(hé)相對導入都(dōu)将被嘗試。0意味着隻執行(xíng)絕對導入。級别的正值表示要(yào)搜索的父目錄相對于模塊調用目錄的數(shù)量__import__()。
當name變量具有這(zhè)種形式時(shí)package.module,通(tōng)常會返回頂層包(名稱直到第一(yī)個點),而不是按名稱命名的模塊。但(dàn)是,如(rú)果給出非空的fromlist參數(shù),則會返回按名稱命名的模塊。
例如(rú),該語句import spam導緻類似于以下(xià)代碼的字節碼:
spam = __import__('spam', globals(), locals(), [], -1)
複制
聲明(míng)import spam.ham結果在這(zhè)個調用中:
spam = __import__('spam.ham', globals(), locals(), [], -1)
複制
請(qǐng)注意,__import__()這(zhè)裏返回頂層模塊是因為(wèi)這(zhè)是通(tōng)過import語句綁定到名稱的對象。
另一(yī)方面,聲明(míng)from spam.ham import eggs, sausage as saus結果
_temp = __import__('spam.ham', globals(), locals(), ['eggs', 'sausage'], -1)
eggs = _temp.eggs
saus = _temp.sausage
複制
在這(zhè)裏,spam.ham模塊從(cóng)中返回__import__()。從(cóng)這(zhè)個對象中,要(yào)導入的名稱被檢索并分配給它們各自(zì)的名稱。
如(rú)果您隻是想按名稱導入模塊(可(kě)能(néng)位于軟件包內(nèi)),請(qǐng)使用importlib.import_module()。
在版本2.5中更改:添加了(le)級别參數(shù)。
在版本2.5中更改:添加了(le)對參數(shù)的關鍵字支持。
有幾種內(nèi)置函數(shù)不再是學習,了(le)解或在現代Python編程中使用的基本功能(néng)。他(tā)們一(yī)直在這(zhè)裏保持與為(wèi)舊(jiù)版Python編寫的程序的向後兼容性。
Python程序員(yuán),培訓師(shī),學生和(hé)圖書(shū)作(zuò)者應該随時(shí)繞過這(zhè)些功能(néng),而不必擔心丢失重要(yào)的東西(xī)。
apply(function, args[, keywords])
的功能(néng)參數(shù)必須是可(kě)調用對象(用戶定義的或內(nèi)置的函數(shù)或方法,或一(yī)個類對象)和(hé)ARGS參數(shù)必須是一(yī)個序列。用args作(zuò)為(wèi)參數(shù)列表調用該函數(shù) ; 參數(shù)的數(shù)量是元組的長(cháng)度。如(rú)果可(kě)選關鍵字參數(shù)存在,則它必須是鍵字符串的字典。它指定要(yào)添加到參數(shù)列表末尾的關鍵字參數(shù)。調用與調用不同,因為(wèi)在那(nà)種情況下(xià)總是隻有一(yī)個參數(shù)。使用相當于。apply()function(args)apply()function(*args, **keywords)
自(zì)2.3版棄用:請(qǐng)使用,function(*args, **keywords)而不是apply(function, args, keywords)(請(qǐng)參閱解包參數(shù)列表)。
buffer(object[, offset[, size]])
的對象參數(shù)必須是支持呼叫緩沖器接口(如(rú)字符串,數(shù)組和(hé)緩沖液)的對象。将創建一(yī)個引用對象參數(shù)的新緩沖區(qū)對象。緩沖區(qū)對象将是從(cóng)對象的開(kāi)頭(或從(cóng)指定的偏移量)開(kāi)始的一(yī)個切片。切片将延伸到對象的末尾(或者将具有由大小參數(shù)給定的長(cháng)度)。
coerce(x, y)
使用與算術(shù)運算相同的規則,返回一(yī)個由兩個數(shù)字參數(shù)組成的元組。如(rú)果脅迫不可(kě)行(xíng),請(qǐng)提高TypeError。
intern(string)
在“interned”字符串的表格中輸入字符串并返回字符串 - 字符串本身或副本。實習字符串對于在字典查找中獲得一(yī)些性能(néng)很(hěn)有用 - 如(rú)果字典中的密鑰被實施并且查找密鑰被實施,則可(kě)以通(tōng)過指針比較而不是字符串比較來完成關鍵比較(哈希後)。通(tōng)常情況下(xià),Python程序中使用的名稱會自(zì)動實現,并且用于保存模塊,類或實例屬性的字典具有實際的密鑰。
版本2.3中更改:字符串不是不朽的(就像他(tā)們以前在Python 2.2和(hé)之前); 你必須保持對intern()周圍回報價值的參考才能(néng)從(cóng)中受益。
網站建設開(kāi)發|APP設計開(kāi)發|小程序建設開(kāi)發