做自(zì)由與創造的先行者

内置函數 | Built-in Functions

Python開(kāi)發手冊

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)件中讀取(''通常使用(yòng)),則傳遞一些(xiē)可識别的值。

該模式參數指定什(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)發
下(xià)一篇:Types: Built-in Types
上(shàng)一篇:内置例外(wài) | Built-in Exceptions