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