python內置函數總結


以下是python3.4版本的內置函數

 

1、abx(x)

返回一個數的絕對值。參數可以是普通的整數,長整數或者浮點數。如果參數是個復數,返回它的模

2、all(iterable)

如果iterable的所有元素為真(或者iterable為空), 返回True。等同於:

def all(iterable):

     for element in iterable:

         if not element:

              return False

     return True

3、any(iterable)

如果iterable的任一元素為真,返回True。如果iterable為空,返回False。等同於:

def any(iterable):

     for element in iterable:

         if element:

           return True

    return False

 

4、ascii(object)

這個函數跟repr()函數一樣,返回一個可打印的對象字符串方式表示。當遇到非ASCII碼時,就會輸出\x,\u或\U等字符來表示。與Python 2版本里的repr()是等效的函數。

 

>>>print(ascii(10), ascii(9000000), ascii('b\31'), ascii('0x\1000')) 

10   9000000   'b\x19'   '0x@0'

 

5、bin(x)

將一個整數轉化成一個二進制字符串。結果是一個合法的Python表達式。如果x不是一個Python int對象,它必須定義一個返回整數的__index__()方法

 

6、bool([x])

將一個值轉化成布爾值,使用標准的真值測試例程。如果x為假或者沒有參數,它返回False;否則它返回True。bool也是一個類,它是int的子類。bool不能被繼承。它唯一的實例就是False和True

 

7、bytearray([source[, encoding[, errors]]])

返回一個新的字節數組。bytearray類型是一個可變的整數序列,整數范圍為0 <= x < 256(即字節)。 它有可變序列的大多數方法,參見Mutable Sequence Types,同時它也有str類型的大多數方法,參見String Methods。

 

source參數可以以不同的方式來初始化數組,它是可選的:

如果是string,必須指明encoding(以及可選的errors)參數;bytearray()使用str.encode()將字符串轉化為字節數組。

如果是integer,生成相應大小的數組,元素初始化為空字節。

如果是遵循buffer接口的對象,對象的只讀buffer被用來初始化字節數組。

如果是iterable,它的元素必須是整數,其取值范圍為0 <= x < 256,用以初始化字節數組。

如果沒有參數,它創建一個大小為0的數組。

 

>>> c=bytearray('qwe1321','utf-8')

>>> c

bytearray(b'qwe1321')

>>> c[1]

119

 

8、bytes([source[, encoding[, errors]]])

返回一個新的字節數組。bytearray類型是一個不可變的整數序列,整數范圍為0 <= x < 256(即字節)。其他類似於bytearray

 

9、callable(object)

如果object參數可調用,返回True;否則返回False。如果返回真,對其調用仍有可能失敗;但是如果返回假,對object的調用總是失敗。注意類是可調用的(對類調用返回一個新實例);如果類實例有__call__()方法,則它們也是可調用的

 

10、chr(i)

返回一個單字符字符串,字符的ASCII碼為整數i。例如,chr(97)返回字符串'a'。 它是ord()的逆運算。參數的取值范圍為[0..255]的閉區間;如果i超出取值范圍,拋出ValueError。參見unichr()

 

11、classmethod(function)

將function包裝成類方法。

 

類方法接受類作為隱式的第一個參數,就像實例方法接受實例作為隱式的第一個參數一樣。聲明一個類方法,使用這樣的慣例:

 

class C(object):

    @classmethod

    def f(cls, arg1, arg2, ...):

        ...

@classmethod是函數decorator(裝飾器)參見Function definitions中的函數定義。

 

它即可以通過類來調用(如C.f()),也可以通過實例來調用(如C().f())。除了實例的類,實例本身被忽略。如果在子類上調用類方法,子類對象被傳遞為隱式的第一個參數。

類方法不同於C++或Java中的靜態方法。如果你希望靜態方法,參見這節的staticmethod()。需要類方法更多的信息,參見The standard type hierarchy中標准類型層次部分的文檔。

 

12、compile(source, filename, mode[, flags[, dont_inherit]])

 

13、complex([real[, imag]])

創建一個復數,它的值為real + imag*j;或者將一個字符串/數字轉化成一個復數。如果第一個參數是個字符串,它將被解釋成復數,同時函數不能有第二個參數。第二個參數不能是字符串。每個參數必須是數值類型(包括復數)。如果imag被忽略,它的默認值是0,這時該函數就像是int(),long()和float()這樣的數值轉換函數。如果兩個參數都被忽略,返回0j。

注意:當從字符串轉化成復數的時候,字符串中+或者-兩邊不能有空白。例如,complex('1+2j')是可行的,但complex('1 + 2j')會拋出ValueError異常。

 

14、delattr(object, name)

這個函數和setattr()有關。參數是一個對象和一個字符串。字符串必須是對象的某個屬性的名字。只要對象允許,這個函數刪除該名字對應的屬性。例如,delattr(x, 'foobar')等同於del x.foobar

 

15、dict(**kwarg) 、dict(mapping, **kwarg) 、dict(iterable, **kwarg)

返回一個新字典,從一個可選的位置參數和一個可能為空的關鍵字參數集合初始化。

如果沒有給定位置參數,則創建一個空的字典。如果給定位置參數且它是一個映射對象,則創建一個與該映射對象具有相同的鍵-值對的一個字典。否則,定位參數必須是一個可迭代的對象。可迭代對象中的每個元素必須本身是具有恰好兩個對象的可迭代對象。每個元素的第一個對象就成為新字典的鍵,第二個對象成為對應的值。如果鍵出現超過一次,該鍵的最后一個值將成為新字典中相應的值。

如果給出關鍵字參數,關鍵字參數和它們的值會被添加到從位置參數創建的字典。如果正在添加的鍵已存在,來自關鍵字參數的值將替換來自位置參數的值。

為了說明,下面所有的例子都返回與{"one": 1, "two": 2, "three": 3}相等的一個字典:

 

>>> a = dict(one=1, two=2, three=3)

>>> b = {'one': 1, 'two': 2, 'three': 3}

>>> c = dict(zip(['one', 'two', 'three'], [1, 2, 3]))

>>> d = dict([('two', 2), ('one', 1), ('three', 3)])

>>> e = dict({'three': 3, 'one': 1, 'two': 2})

>>> a == b == c == d == e

True

 

16、dir([object])

如果沒有參數,返回當前本地作用域內的名字列表。如果有參數,嘗試返回參數所指明對象的合法屬性的列表。

 

如果對象有__dir__()方法,該方法被調用且必須返回一個屬性列表。這允許實現了定制化的__getattr__()或者__getattribute__()函數的對象定制dir()報告對象屬性的方式。

 

如果對象沒有提供__dir__(),同時如果對象有定義__dict__屬性,dir()會先嘗試從__dict__屬性中收集信息,然后是對象的類型對象。如果對象是自定義的話,返回列表有可能不完整或不准確__getattr__()。

 

對於不同類型的對象,默認的dir()行為也不同,因為它嘗試產生相關的而不是完整的信息:

 

如果對象是模塊對象,列表包含模塊的屬性名。

如果對象是類型或者類對象,列表包含類的屬性名,及它的基類的屬性名。

否則,列表包含對象的屬性名,它的類的屬性名和類的基類的屬性名。

返回的列表按字母順序排序。例如:

>>> 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()主要是為了在交互式環境下使用方便,它嘗試提供有意義的名字的集合,而不是提供嚴格或一致定義的名字的集合,且在不同的版本中,具體的行為也有所變化。例如,如果參數是一個類,那么元類屬性就不會出現在結果中。

 

17、divmod(a, b)

在長整數除法中,傳入兩個數字(非復數)作為參數,返回商和余數的二元組。對於混合的操作數類型,應用二元算術運算符的規則。對於普通整數或者長整數,結果等同於(a // b, a % b)。對於浮點數結果是(q, a % b),q一般是math.floor(a / b),但也可能比那小1。不管怎樣,q * b + a % b非常接近於a,如果a % b非0,它和b符號相同且0 <= abs(a % b) < abs(b)。

 

18、enumerate(sequence, start=0)

返回一個枚舉對象。sequence必須是個序列,迭代器iterator,或者支持迭代的對象。enumerate()返回的迭代器的next()方法返回一個元組,它包含一個計數(從start開始,默認為0)和從sequence中迭代得到的值:

>>> 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

 

19、eval(expression[, globals[, locals]])

參數是Unicode或者Latin-1編碼的字符串,全局變量和局部變量可選。如果有全局變量,globals必須是個字典。如果有局部變量,locals可以是任何映射類型對象。

expression參數被當作Python表達式來解析並演算(技術上來說,是個條件列表),使用globals和locals字典作為全局和局部的命名空間。如果globals字典存在,且缺少‘__builtins__’,在expression被解析之前,當前的全局變量被拷貝進globals。這意味着一般來說expression能完全訪問標准__builtin__模塊,且受限的環境會傳播。如果locals字典被忽略,默認是globals字典。如果都被忽略,表達式在eval()被調用的環境中執行。返回值是被演算的表達式的結果。語法錯誤報告成異常。例子:

>>> x = 1

>>> print eval('x+1')

2

該函數也能執行任意的代碼對象(如compile()返回的結果)。 在這種情況下,傳遞代碼對象而不是字符串。如果代碼對象編譯時mode參數為'exec',eval()返回None。

提示:exec語句支持動態的語句執行。execfile()函數支持執行文件中的語句。globals()和locals()函數返回當前的全局變量和局部變量的字典,可以傳遞給eval()或者execfile()。

參見ast.literal_eval(),該函數能安全演算只含字面量的表達式的字符串。

 

20、exec(object[, globals[, locals]])

 

21、filter(function, iterable)

構造一個列表,列表的元素來自於iterable,對於這些元素function返回真。iterable可以是個序列,支持迭代的容器,或者一個迭代器。如果iterable是個字符串或者元組,則結果也是字符串或者元組;否則結果總是列表。如果function是None,使用特性函數,即為假的iterable被移除。

注意,在function不為None的情況下,filter(function, iterable)等同於[item for item in iterable if function(item)];否則等同於[item for item in iterable if item](function為None)。

參見itertools.ifilter()和itertools.ifilterfalse(),以得到該函數的迭代器版本,以及該函數的變體(過濾function返回假的元素)。

 

22、float([x])

將字符串或者數字轉化成浮點數。如果參數是字符串,它必須包含小數或者浮點數(可以有符號),周圍可以有空白。參數也可以是[+|-]nan或者[+|-]inf。其它情況下,參數可以是原始/長整數或者浮點數,(以Python的浮點數精度)返回具有相同值的浮點數。如果沒有參數,返回0.0。

注意 當傳遞字符串時,依賴於底層的C庫,可以返回NaN(Not a Number,不是一個數字)和Infinity(無窮大)這樣的值。該函數接受字符串nan(NaN),inf(正無窮大)和-inf(負無窮大)。對於NaN,不區分大小寫和+/-號。總是用nan,inf或者-inf來表示NaN和Infinity。

 

23、format(value[, format_spec])

將value轉化成“格式化”的表現形式,格式由format_spec控制。對format_spec的解釋依賴於value參數的類型,大多數內置類型有標准的格式化語法:Format Specification Mini-Language。

注意 format(value, format_spec)僅僅調用value.__format__(format_spec)。

 

24、frozenset([iterable])

返回一個新的frozenset對象,如果可選參數iterable存在,frozenset的元素來自於iterable。frozenset是個內置類。參見frozenset和Set Types — set, frozenset。

關於其它容器,參見set,list,tuple,和dict類,以及collections模塊。

 

25、getattr(object, name[, default])

返回object的屬性值。name必須是個字符串。如果字符串是對象某個屬性的名字,則返回該屬性的值。例如,getattr(x, 'foobar')等同於x.foobar。如果名字指明的屬性不存在,且有default參數,default被返回;否則拋出AttributeError。

 

26、globals()

返回表示當前全局符號表的字典。它總是當前模塊的字典(在函數或者方法中,它指定義的模塊而不是調用的模塊)

 

27、hasattr(object, name)

參數是一個對象和一個字符串。如果字符串是對象某個屬性的名字,返回True;否則返回False。(實現方式為調用getattr(object, name),看它是否拋出異常)。

 

28、hash(object)

返回對象的hash(哈希/散列)值(如果有的話)。hash值是整數。它被用於在字典查找時快速比較字典的鍵。相同的數值有相同的hash(盡管它們有不同的類型,比如1和1.0)

 

29、help([object])

調用內置的幫助系統。(這個函數主要用於交互式使用。)如果沒有參數,在解釋器的控制台啟動交互式幫助系統。如果參數是個字符串,該字符串被當作模塊名,函數名,類名,方法名,關鍵字或者文檔主題而被查詢,在控制台上打印幫助頁面。如果參數是其它某種對象,生成關於對象的幫助頁面。

這個函數經由site模塊加入內置的命名空間。

 

30、hex(x)

將任意大小的整數轉化成以“0x”打頭的小寫的十六進制字符串,例如:

>>> hex(255)

'0xff'

>>> hex(-42)

'-0x2a'

>>> hex(1L)

'0x1L'

如果x不是Python的int或者long對象,它必須定義__index__()方法以返回一個整數。

參見int(),它將十六進制字符串轉化成一個整數。

注意 使用float.hex()方法得到浮點數的十六進制字符串表示。

 

31、id(object)

返回對象的“標識”。這是一個整數(或長整數),保證在對象的生命期內唯一且不變。生命期不重疊的兩個對象可以有相同的id()值。

CPython實現細節: 這是對象的內存地址。

 

32、input([prompt])

該函數不會捕獲用戶錯誤。如果輸入語法不合法,將拋出SyntaxError。如果執行中有錯誤,將拋出其它異常。

如果有裝載readline,input()將會用它來提供復雜的行編輯和歷史功能。

建議使用raw_input()函數來得到用戶的一般輸入。

 

33、int(x=0)、int(x, base=10)

將數字或字符串x轉化成一個整數,如果沒有參數則返回0。如果x是個數字,它可以是普通整數/長整數,或者浮點數。如果x是浮點數,則向0截斷。如果參數超出了整數的范圍,則返回長整數對象。

如果x不是個數字,或者存在base參數,則x必須是個表示以base為基數的integer literal(整數字面量)的字符串或者Unicode對象。字面量的前面可以有+或者-(中間不能有空格),周圍可以有空白。以n為基數的字面量包含數字0到n-1,用a到z(或者A到Z)來表示10到35。默認的base是10。允許的值為0和2-36。二進制,八進制和十六進制的字面量前面可以有0b/0B,0o/0O/0,或者0x/0X,就像代碼中的整數字面量一樣。基數0表示嚴格按整數字面量來解釋字符串,所以實際的基數為2,8,10或者16。

整數類型描述於Numeric Types — int, float, long, complex。

 

34、isinstance(object, classinfo)

如果參數object 是參數classinfo 的一個實例;或者是其一個(直接的、間接的或者virtual)子類的實例,返回真。如果classinfo是類型對象(新式類)而object是該類型對象;或者是其子類(直接的,間接的,或者virtual),返回真。如果object不是給定類型的類實例或者對象,該函數總是返回假。如果classinfo既不是類對象,也不是類型對象,它可以是類/類型對象的元組,或者遞歸包含這樣的元組(不接受其它的序列類型)。如果classinfo不是類,類型,類/類型的元組,拋出TypeError異常。

 

35、issubclass(class, classinfo)

如果class是classinfo的子類(直接的,間接的,或者virtual) ,返回真。一個類被認為是它自己的子類。classinfo可以是類對象的元組,這時classinfo中的每個類對象都會被檢查。其它情況下,拋出TypeError異常。

 

36、iter(object[, sentinel])

返回一個iterator對象。根據有無第二個參數,對第一個參數的解釋相差很大。如果沒有第二個參數,o必須是個集合對象,要么支持迭代協議(即 __iter__()方法),要么支持序列協議(即__getitem__()方法,整數參數從0開始)。 如果這些協議都不支持,拋出TypeError。如果有第二個參數sentinel,o必須是個可調用對象。這種情況下返回的迭代,每當調用其next()方法時,將會調用o(不帶參數);如果返回值等於sentinel,拋出StopIteration,否則返回該值。

第二種形式的iter()的一個有用的應用就是讀一個文件的行,直到讀到特定行。下面的例子讀一個文件,直到readline()方法返回一個空字符串:

with open('mydata.txt') as fp:

    for line in iter(fp.readline, ''):

        process_line(line)

 

37、len(s)

返回對象的長度(元素的個數)。參數可以是序列(如字符串,字節,元組,列表或者范圍)或者集合(如字典,集合或者固定集合)。

 

38、list([iterable])

返回一個列表,其元素來自於iterable(保持相同的值和順序)。iterable可以是個序列,支持迭代的容器,或者迭代器對象。如果iterable已經是個列表,返回其拷貝,類似於iterable[:]。例如,list('abc')返回['a', 'b', 'c'],list( (1, 2, 3) )返回[1, 2, 3]。如果沒有參數,返回一個新的空的列表,[]。

list是可變序列類型,見文檔Sequence Types — str, unicode, list, tuple, bytearray, buffer, xrange。關於其它容器參見內置dict,set,和tuple類,以及collections模塊。

 

39、locals()

更新並返回表示當前局部符號表的字典。當locals在函數塊中而不是類塊中被調用時,locals()返回自由變量。

注意:不應該修改該字典的內容;所做的改變不一定會影響到解釋器所用的局部和自由變量的值。

 

40、map(function, iterable, ...)

將function應用於iterable的每一個元素,返回結果的列表。如果有額外的iterable參數,並行的從這些參數中取元素,並調用function。如果一個參數比另外的要短,將以None擴展該參數元素。如果function是None使用特性函數;如果有多個參數,map()返回一元組列表,元組包含從各個參數中取得的對應的元素(某種變換操作)。iterable參數可以是序列或者任意可迭代對象;結果總是列表。

 

41、max(iterable, *[, key, default]) 、max(arg1, arg2, *args[, key])

返回可迭代的對象中的最大的元素,或者返回2個或多個參數中的最大的參數。

如果有一個位置參數,iterable必須是個非空的可迭代對象(如非空字符串,元組或者列表)。返回可迭代對象中最大的元素。如果有2個或更多的位置參數,返回最大位置參數。

可選的key參數指明了有一個參數的排序函數,如list.sort()中使用的排序函數。如果iterable為空,則返回default,如果iterable為空且default未設置的話則引發ValueError錯誤;如果有key參數,它必須是關鍵字參數(例如,max(a,b,c,key=func)

 

42、memoryview(obj)

 

43、min(iterable, *[, key, default]) 、min(arg1, arg2, *args[, key])

返回可迭代的對象中的最小的元素,或者返回2個或多個參數中的最小的參數。

如果有一個位置參數,iterable必須是個非空的可迭代對象(如非空字符串,元組或者列表)。返回可迭代對象中最小的元素。如果有2個或更多的位置參數,返回最小位置參數。

可選的key參數指明了有一個參數的排序函數,如list.sort()中使用的排序函數。如果iterable為空,則返回default,如果iterable為空且default未設置的話則引發ValueError錯誤;如果有key參數,它必須是關鍵字參數(例如,max(a,b,c,key=func)

 

44、next(iterator[, default])

通過調用iterator的next()方法,得到它的下一個元素。如果有default參數,在迭代器迭代完所有元素之后返回該參數;否則拋出StopIteration。

 

45、object()

返回一個新的無特征的對象。object是所有新式類的基類。它有對所有新式類的實例通用的方法。

 

46、oct(x)

將一個(任意尺寸)整數轉化成一個八進制字符串。結果是一個合法的Python表達式。

 

47、open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

 

48、ord(c)

給定一個長度為一的字符串,如果參數是unicode對象,則返回表示字符的代碼點的整數;如果參數是八位字符串,返回字節值。例如,ord('a')返回整數97,ord(u'\u2020')返回8224。它是八位字符串chr()的反函數,也是unicode對象unichr()的反函數。如果參數是unicode且構建Python時添加了UCS2 Unicode支持,那么字符的碼點必須在[0..65535]的閉區間;如果字符串的長度為2,則拋出TypeError。

 

49、pow(x, y[, z])

返回x 的 y次冪; 如果 z 提供的時候,, 返回 x 的 y 次冪,然后對  z 取模。(這樣比 pow(x, y) % z) 更高效。兩個參數的形式 pow(x, y) 與使用 操作符: x**y 是等價的。

參數必須是數字類型的。由於操作數是混合類型的,二進制計算的原因需要一些強制的規定。對於整型和長整型的操作數,計算結果和操作數(強制后的)是相同的類型。除非第二個 參數是負數。在這種情況下, 所有的參數都會被轉化成浮點型,並且會返回一個浮點的結果。例如, 10**2 返回 100, 但 10**-2 返回0.01. (這個新特性被加入在Python2.2中在Python2.1和之前的版本中,如果兩個參數是整型,並且第二個參數為負數的情況下,會拋出一個異常。)如果第二個參數為負數,那么第三個參數必須省略。如果提供參數 z , x and y 必須為整數,而且y要是非負整數。(這個限制是在Python2.2加入的。Python2.1以及之前的版本, 三個參數都是浮點型的pow() 版本,返回的結果依賴 平台 對於浮點數的取整情況。)

 

50、print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False) 

以sep分割,end的值結尾,將對象打印到文件流中。sep, end 和 file,如果提供這三個參數的話,必須以鍵值的形式。

所有非鍵值形式提供的參數,都被轉化為字符串,就像用str()轉化那樣。然后寫到 文件流中,以 sep 分割, end 結尾。sep and end 都必須是字符串形式的; 也可以留成 None, 這樣會使用默認值。如果沒有打印 對象, print() 只打印一個 結束符號 end.

file 參數一定要是含有 write(string)方法的對象 ; 如果該參數為空,或為None, 默認使用sys.stdout 作為輸出。是否輸出緩沖通常是由文件確定的,但如果刷新關鍵字flush參數是真的,流被強制刷新。

 

52、property(fget=None, fset=None, fdel=None, doc=None) 

 

53、range(start, stop[, step])

這是一個創建包含數列的列表的通用函數。它最常用於for循環。參數必須為普通的整數。如果step參數省略,則默認為1。如果start參數省略,則默認為0。該函數的完整形式返回一個整數列表[start, start + step, start + 2 * step, ...]。如果step為正,則最后一個元素start + i * step最大且小於stop;如果step為負,則最后一個元素start + i * step最小且大於stop。step必須不能為零(否則會引發ValueError)。

 

54、repr(object)

返回某個對象可打印形式的字符串。它與字符串轉換式(反引號)產生的值相同。有時候能夠把這個操作作為一個普通的函數訪問非常有用。For many types, this function makes an attempt to return a string that would yield an object with the same value when passed to eval(), otherwise the representation is a string enclosed in angle brackets that contains the name of the type of the object together with additional information often including the name and address of the object. 類可以通過定義__repr__()方法控制該函數對其實例的返回。

 

55、reversed(seq)

返回一個反向迭代器。seq必須是一個具有__reversed__() 方法或支持序列協議的對象(整數參數從0開始的__len__()方法和__getitem__() 方法)。

 

56、round(number[, ndigits])

返回一個浮點型 近似值,保留小數點后 ndigits 位。如果省略ndigits,它默認為零。結果是一個浮點數。該值將被圓整為距離10的負ndigits次方的最近的某個倍數; 如果有兩個倍數離的一樣近,結果取離0較遠的(所以,例如,round(0.5)是1.0 且round(-0.5)是-1.0)。

注意:浮點數round()的行為可能讓人驚訝,例如round(2.675, 2)給出的是2.67 而不是期望的2.68。這不是一個錯誤:大部分十進制小數不能用浮點數精確表示,它是因為這樣的一個事實的結果。更多信息,請參閱Floating Point Arithmetic: Issues and Limitations。

set([iterable])

返回一個新的set 對象,其元素可以從可選的iterable獲得。set是一個內建的類。 關於該類的文檔,請參閱set和集合類型 — set, frozenset。

關於其它容器請參閱內建的frozenset、list、tuple和dict類,還有collections模塊。

 

57、setattr(object, name, value)

getattr()的相反操作。參數是一個對象、一個字符串和任何一個值。字符串可以是一個已存在屬性的名字也可以是一個新屬性的名字。該函數將值賦值給屬性,只要對象允許。例如,setattr(x, 'foobar', 123)等同於x.foobar = 123。

 

58、slice(start, stop[, step])

返回一個slice對象,表示由索引range(start, stop, step)指出的集合。start和step參數默認為None。切片對象具有只讀屬性start、stop和step,它們僅僅返回參數的值(或者它們的默認值)。它們沒有其他顯式的函數;它是它們用於Numerical Python和其它第三方擴展。在使用擴展的索引語法時同樣會生成切片對象。例如:a[start:stop:step]或a[start:stop, i]。返回迭代器的另外一個版本可以參閱itertools.islice()。

 

59、sorted(iterable[, key][, reverse]) 

依據iterable中的元素返回一個新的列表。

key和reverse與list.sort()方法的參數含義相同(在可變的序列類型一節描述)。

key指定一個帶有一個參數的函數,它用於從每個列表元素選擇一個比較的關鍵字:key=str.lower。默認值是None(直接比較元素)。

reverse是一個布爾值。如果設置為True,那么列表元素以反向比較排序。

通常情況下,key和reverse轉換處理比指定一個等同的cmp函數要快得多。這是因為cmp為每個元素調用多次但是key和reverse只會觸摸每個元素一次。使用functools.cmp_to_key()來轉換舊式的cmp函數為key函數。

 

60、staticmethod(function)

返回function的一個靜態方法。

靜態方法不接受隱式的第一個參數(也就是實例名稱self)。要聲明靜態方法,請使用下面的習慣方式:

class C(object):

    @staticmethod

    def f(arg1, arg2, ...):

        ...

@staticmethod形式是一個函數裝飾器 – 細節請參閱函數定義中函數定義的描述。

它既可以在類上調用(例如C.f())也可以在實例上調用(例如C().f())。除了它的類型,實例其他的內容都被忽略。

 

61、str(object=b'', encoding='utf-8', errors='strict')

返回一個字符串,包含對象的友好的可打印表示形式。對於字符串,它返回字符串本身。與repr(object)的區別是str(object)不會永遠試圖返回一個eval()可接受的字符串;它的目標是返回一個可打印的字符串。如果沒有給出參數,則返回空字符串''。

 

62、sum(iterable[, start])

將start以及iterable的元素從左向右相加並返回總和。start默認為0。iterable的元素通常是數字,start值不允許是一個字符串。

對於某些使用場景,有比sum()更好的選擇。連接字符串序列的首選和快速的方式是調用''.join(sequence)。如要相加擴展精度的浮點數,請參閱math.fsum()。若要連接一系列的可迭代量,可以考慮使用itertools.chain()。

 

63、super(type[, object-or-type])

返回一個代理對象,這個對象指派方法給一個父類或者同類. 這對進入類中被覆蓋的繼承方法非常有用。搜索順序和 getattr() 一樣。而它自己的 類型 則被忽略。

type的__mro__屬性羅列了用getattr()和super()來搜索排序的解決方法。它可以隨着繼承關系的變化,動態的更新。

如果沒有第二個參數,則返回未綁定的super對象 If the second argument is an object, isinstance(obj, type) must be true. If the second argument is a type, issubclass(type2, type) must be true (this is useful for classmethods)。

 

64、tuple([iterable])

返回一個元組,其元素及順序與iterable的元素相同。iterable可以是一個序列、支持迭代操作的容器或迭代器對象。如果iterable已經是一個元組,它將被原樣返回。例如,tuple('abc')返回('a', 'b', 'c'),tuple([1, 2, 3])返回(1, 2, 3)。如果沒有給出參數,則返回一個空的元組()。

tuple是一個不可變序列類型,其文檔在序列類型 — str, unicode, list, tuple, bytearray, buffer, xrange。關於其它容器,請參閱內建的dict、list和set類以及collections模塊。

 

65、type(name, bases, dict)

只有一個參數時,返回object的類型。返回值是一個類型對象。建議使用內建函數isinstance()測試一個對象的類型。

帶有三個參數時,返回一個新的類型對象。它本質上是class語句的動態形式。name字符串是類的名字且將成為__name__屬性;bases元組逐條列舉基類並成為__bases__屬性;dict字典是包含類體定義的命名空間並成為__dict__屬性。例如,下面的兩條語句創建完全相同的type對象:

>>> class X(object):

...     a = 1

...

>>> X = type('X', (object,), dict(a=1))

 

66、vars([object])

返回模塊、類、實例或其它任何具有__dict__屬性的對象的__dict__屬性。

模塊和實例這樣的對象具有可更新的__dict__屬性;然而,其它對象可能對它們的__dict__屬性具有寫限制(例如,新式類使用dictproxy 來防止直接的字典更新)。

如果不帶參數,則vars()的行為類似locals()。注意,局部字典只用於讀取因為對局部字典的更新被忽略。

 

67、zip(*iterables)

該函數返回一個以元組為元素的列表,其中第 i 個元組包含每個參數序列的第 i 個元素。返回的列表長度被截斷為最短的參數序列的長度。當多個參數都具有相同的長度時,zip()類似於帶有一個初始參數為None的map()。只有一個序列參數時,它返回一個1元組的列表。沒有參數時,它返回一個空的列表。

可以保證迭代按從左向右的計算順序。這使得使用zip(*[iter(s)]*n)來將一系列數據分類歸並為長度為n的組成為習慣用法。

zip() 與 * 操作符一起可以用來 unzip 一個列表:

>>> 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

 

68、__import__(name, globals=None, locals=None, fromlist=(), level=0)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM