Pyhton內建函式大全

weixin_34026276發表於2017-11-12

一、數學運算類

abs(x)求絕對值

    1、引數可以是整型,也可以是複數

    2、若引數是複數,則返回複數的模

complex([real[, imag]])  建立一個複數

coerce()   可以看成一個數值型別轉換函式)有兩個引數,都是數字,返回這兩個數字的一個列表,將這兩個數字的資料型別統一。如coerce(1,2j),返回(1+0j,2j)

divmod(a, b)分別取商和餘數

注意:整型、浮點型都可以

float([x])將一個字串或數轉換為浮點數。如果無引數將返回0.0

int([x[, base]]) 將一個字元轉換為int型別,base表示進位制

long([x[, base]]) 將一個字元轉換為long型別

pow(x, y[, z]) 返回x的y次冪

range([start], stop[, step]) 產生一個序列,預設從0開始

round(x[, n]) 四捨五入

sum(iterable[, start]) 對集合求和

oct(x)將一個數字轉化為8進位制

ord(x)   返回字元對應的ASC碼數字編號,如ord('A')返回65

hex(x)將整數x轉換為16進位制字串

chr(i)返回整數i對應的ASCII字元

bin(x)將整數x轉換為二進位制字串

bool([x])  

將x轉換為Boolean型別,如果x預設,返回False,bool也為int的子類;

引數x:任意物件或預設;大家注意到:這裡使用了[x],說明x引數是可有可無的,如果不給任何引數則會返回False。


二、集合類操作

str([object]) 轉換為string型別

Unicode

Unicode可以支援多種語言,之前用的都是ASCII,每個英文字元都用7位二進位制數的方式儲存在計算機內,其範圍是32到126.

但是ASCII碼只能表示95個可列印的字元,後來把ASCII擴充套件到了8位,這樣就能表示223個字元了,雖然這個來表示歐美字母語言已經足夠了,但是對於像中文等語系來說就太少了。於是Unicode碼誕生了。

Unicode通過使用一個或者多個位元組來表示一個字元,這樣就突破了ASCII的限制,這樣,Unicode可以表示超過90000個字元了。

為了讓Unicode和ASCII碼值的字串看起來儘可能的相像,Python的字串從原來的簡單資料型別改變成了真正的物件,ASCII字串成了stringtype,而Unicode字串成了UnicodeType型別,他們的行為非常相近。String模組裡面都有相應的處理函式。String模組已經停止了更新,只保留了對ASXII碼的支援,string模組已經不推薦使用,在任何要跟Unicode相容的程式碼裡都不要再用該模組,Python保留該模組僅僅為了向後相容。

Python裡面預設所有字面上的字串都用ASCII編碼,可以通過在字串前面加一個‘u’字首的方式宣告Unicode字串,這個‘u’字首告訴Python後面的字串要編成Unicode字串。

把Unicode應用到實際中注意一下四點:

   1 程式中出現字串時一定要加一個字首u

   2 不要用str()函式,用Unicode()代替

   3 不要用過時的string模組。如果傳給它非ASCII碼,它會把一切搞砸。

   4 不到必須時不要在你的程式裡編解碼Unicode字元,只在你要寫入檔案或者資料庫或者網路時,才呼叫encode()函式和decode()函式。

basestring()str和unicode的超類(父類),也是抽象類,因此不能被呼叫和例項化,但可以被用來判斷一個物件是否為str或者unicode的例項,isinstance(obj, basestring)等價於isinstance(obj, (str, unicode));

bytearray([source [, encoding [, errors]]])   返回一個byte陣列

Bytearray型別是一個可變的序列,並且序列中的元素的取值範圍為 [0 ,255]。

引數source:

如果source為整數,則返回一個長度為source的初始化陣列;

如果source為字串,則按照指定的encoding將字串轉換為位元組序列;

如果source為可迭代型別,則元素必須為[0 ,255]中的整數;

如果source為與buffer介面一致的物件,則此物件也可以被用於初始化bytearray.。

版本:在python2.6後新引入,在python3中同樣可以使用!

使用場景:當要遍歷 str 的每一個 byte 的時候就可以用 bytearray。特別是 python 3 裡面 str,因為始終用 unicode 表示,只有用 bytearray 才能訪問到字串真正的 byte。

bytes函式與bytearray函式主要區別是bytes函式產生的物件的元素不能修改,而bytearray函式產生的物件的元素可以修改。因此,除了可修改的物件函式跟bytearray函式不一樣之外,其它使用方法全部是相同的。最後它的引數定義方式也與bytearray函式是一樣的。

format(value [, format_spec])格式化輸出字串

格式化的引數順序從0開始,如“I am {0},I like {1}”

unichr(i)返回給定int型別的unicode

enumerate(sequence [, start = 0])返回一個可列舉的物件,該物件的next()方法將返回一個tuple

iter(o[, sentinel])生成一個物件的迭代器,第二個參數列示分隔符

max(iterable[, args...][key]) 返回集合中的最大值

min(iterable[, args...][key])返回集合中的最小值

dict([arg])建立資料字典

list([iterable]) 將一個集合類轉換為另外一個集合類

set()和 frozenset()函式分別用來生成可變和不可變的集合。如果不提供任何引數,預設會生成空集合。如果提供一個引數,則該引數必須是可迭代的,即一個序列或迭代器或支援迭代的一個物件,例如一個檔案或一個字典。

sorted(iterable[, cmp[, key[, reverse]]])

作用:Return a new sorted list from the items in iterable.

第一個引數是一個iterable,返回值是一個對iterable中元素進行排序後的列表(list)。

可選的引數有三個,cmp、key和reverse。

1)cmp指定一個定製的比較函式,這個函式接收兩個引數(iterable的元素),如果第一個引數小於第二個引數,返回一個負數;如果第一個引數等於第二個引數,返回零;如果第一個引數大於第二個引數,返回一個正數。預設值為None。

2)key指定一個接收一個引數的函式,這個函式用於從每個元素中提取一個用於比較的關鍵字。預設值為None。

3)reverse是一個布林值。如果設定為True,列表元素將被倒序排列。

通常來說,key和reverse比一個等價的cmp函式處理速度要快。這是因為對於每個列表元素,cmp都會被呼叫多次,而key和reverse只被呼叫一次。

3.具體的用法如下:

1)排序基礎

一個簡單的升序排列很簡單-只需要呼叫sorted()函式即可。 這個函式返回一個新的排序列表。:

>>> sorted([5,2,3,1,4])

[1,2,3,4,5]

你也可以使用list的list.sort()方法。這個方法會修改原始的list(返回值為None)。通常這個方法不如sorted()方便-如果你不需要原始的list,list.sort()方法效率會稍微高一些。

>>> a=[5,2,3,1,4]

>>> a.sort()

>>> a

[1,2,3,4,5]

另一個區別在於list.sort()方法只為list定義。而sorted()函式可以接收任何的iterable。

>>> sorted({1: 'D', 2: 'B', 3: 'B', 4: 'E', 5: 'A'}) [1, 2, 3, 4, 5]


reversed() #倒序排列函式 例如print list(reversed(['dream','a','have','I']))  結果['I', 'have', 'a', 'dream']

tuple([iterable]) 生成一個tuple型別

xrange([start], stop[, step]) xrange()函式與range()類似,但xrnage()並不建立列表,而是返回一個xrange物件,它的行為與列表相似,但是隻在需要時才計算列表值,當列表很大時,這個特效能為我們節省記憶體


三、邏輯判斷

all(iterable)

1、集合中的元素都為真的時候為真

2、特別的,若為空串返回為True

any(iterable)

1、集合中的元素有一個為真的時候為真

2、特別的,若為空串返回為False

cmp(x, y)

如果x < y ,返回負數;x == y, 返回0;x > y,返回正數

 

四、反射

callable(object)檢查物件object是否可呼叫

1、類是可以被呼叫的

2、例項是不可以被呼叫的,除非類中宣告瞭__call__方法

classmethod()1、註解,用來說明這個方式是個類方法

2、類方法即可被類呼叫,也可以被例項呼叫

3、類方法類似於Java中的static方法

4、類方法中不需要有self引數

compile(source, filename, mode[, flags[, dont_inherit]])將source編譯為程式碼或者AST物件。程式碼物件能夠通過exec語句來執行或者eval()進行求值。

1、引數source:字串或者AST(Abstract Syntax Trees)物件。

2、引數 filename:程式碼檔名稱,如果不是從檔案讀取程式碼則傳遞一些可辨認的值。

3、引數model:指定編譯程式碼的種類。可以指定為 ‘exec’,’eval’,’single’。

4、引數flag和dont_inherit:這兩個引數暫不介紹

dir([object])

1、不帶引數時,返回當前範圍內的變數、方法和定義的型別列表;

2、帶引數時,返回引數的屬性、方法列表。

3、如果引數包含方法__dir__(),該方法將被呼叫。當引數為例項時。

4、如果引數不包含__dir__(),該方法將最大限度地收集引數資訊

delattr(object, name)刪除object物件名為name的屬性

eval(expression [, globals [, locals]])計算表示式expression的值

execfile(filename [, globals [, locals]])用法類似exec(),不同的是execfile的引數filename為檔名,而exec的引數為字串。

filter(function, iterable)構造一個序列,等價於[ item for item in iterable if function(item)]

1、引數function:返回值為True或False的函式,可以為None

2、引數iterable:序列或可迭代物件

getattr(object, name [, defalut])獲取一個類的屬性

globals()返回一個描述當前全域性符號表的字典

hasattr(object, name)判斷物件object是否包含名為name的特性

hash(object)如果物件object為雜湊表型別,返回物件object的雜湊值

id(object)返回物件的唯一標識

isinstance(object, classinfo)判斷object是否是class的例項

issubclass(class, classinfo)判斷是否是子類

len(s) 返回集合長度

locals() 返回當前的變數列表

map(function, iterable, ...) 遍歷每個元素,執行function操作

memoryview(obj) 返回一個記憶體映象型別的物件

next(iterator[, default]) 類似於iterator.next()

object() 基類

property([fget[, fset[, fdel[, doc]]]]) 屬性訪問的包裝類,設定後可以通過c.x=value等來訪問setter和getter

reduce(function, iterable[, initializer]) 合併操作,從第一個開始是前兩個引數,然後是前兩個的結果與第三個合併進行處理,以此類推

reload(module) 重新載入模組

setattr(object, name, value)設定屬性值

repr(object) 將一個物件變幻為可列印的格式

slice() 返回一個切片物件,它表示的是range(start, stop, step)指定的範圍。start和step引數預設為None。切片物件有隻讀資料屬性start,stop和step,它只是返回引數值(或預設)。

staticmethod宣告靜態方法,是個註解

super(type[, object-or-type]) 引用父類

type(object)返回該object的型別

vars([object]) 返回物件的變數,若無引數與dict()方法類似

bytearray([source [, encoding [, errors]]])返回一個byte陣列

    1、如果source為整數,則返回一個長度為source的初始化陣列;

    2、如果source為字串,則按照指定的encoding將字串轉換為位元組序列;

    3、如果source為可迭代型別,則元素必須為[0 ,255]中的整數;

    4、如果source為與buffer介面一致的物件,則此物件也可以被用於初始化bytearray.

zip([iterable, ...]) 

它接受一系列可迭代的物件作為引數,將物件中對應的元素打包成一個個tuple(元組),然後返回由這些tuples組成的list(列表)。若傳入引數的長度不等,則返回list的長度和引數中長度最短的物件相同。利用*號操作符,可以將list unzip(解壓)。

 

五、IO操作

file(filename [, mode [, bufsize]])file型別的建構函式,作用為開啟一個檔案,如果檔案不存在且mode為寫或追加時,檔案將被建立。新增‘b’到mode引數中,將對檔案以二進位制形式操作。新增‘+’到mode引數中,將允許對檔案同時進行讀寫操作

    1、引數filename:檔名稱。

    2、引數mode:'r'(讀)、'w'(寫)、'a'(追加)。

    3、引數bufsize:如果為0表示不進行緩衝,如果為1表示進行行緩衝,如果是一個大於1的數表示緩衝區的大小 。

input([prompt]) 獲取使用者輸入

推薦使用raw_input,因為該函式將不會捕獲使用者的錯誤輸入

open(name[, mode[, buffering]]) 開啟檔案

與file有什麼不同?推薦使用open

print列印函式

raw_input([prompt]) 設定輸入,輸入都是作為字串處理

 

六、其他

help()--幫助資訊

apply()、buffer()、coerce()、intern()---這些是過期的內建函式,故不說明


七、後記

內建函式,一般都是因為使用頻率比較頻繁或是是元操作,所以通過內建函式的形式提供出來,通過對python的內建函式分類分析可以看出來:基本的資料操作基本都是一些數學運算(當然除了加減乘除)、邏輯操作、集合操作、基本IO操作,然後就是對於語言自身的反射操作,還有就是字串操作,也是比較常用的,尤其需要注意的是反射操作。



本文轉自 jvrmusic520  51CTO部落格,原文連結:http://blog.51cto.com/linuxtech/1742712

相關文章