Python中内置了很多的函數,而學習标準庫我們需要事先熟悉這些内置函數,是以在這裡一個個進行介紹。有些函數比較簡單,隻給予文字描述,而有些函數會給出示例代碼幫助了解。
1、
abs(x)
:傳回一個整數或浮點數的絕對值,如果是複數,傳回它的模。
2、
all(iterable)
:當 iterable 中所有元素都為 True 時(或者 iterable 為空),傳回 True 。
3、
any(iterable)
:當 iterable 中有元素為 True 時,則傳回 True 。如果 iterable 為空,傳回 False 。
4、
ascii(object)
:類似于repr(),傳回一個輸入對象的可列印的字元串。
5、
bin(x)
:将整數 x 轉化為一個二進制字元串。當 x 不是 int 對象時,x 必須實作__index__()方法來傳回一個整型數值。
>>> bin(9)
'0b1001'
6、
bool(x)
:将一個值轉換成一個boolean類型的值,省略 x 将傳回 False。
>>> bool()
False
>>> bool('fedora')
True
7、
bytearray()
: bytearray的構造函數。bytearray類型是一個可變的整數序列(0 <= 整數 < 256),即位元組數組,例如:
>>> a = bytearray(b'after')
>>> list(a) # convert a bytearray object into a list of integers
[97, 102, 116, 101, 114]
8、
bytes()
: 位元組對象(bytes object)的構造函數。bytes是bytearray的 不可變版本:
>>> a = bytes('after', 'UTF-8')
>>> list(a) # convert a bytes object into a list of integers
[97, 102, 116, 101, 114]
9、
callable(object)
:判斷一個對象是否可調用,如果一個執行個體的類實作了 call()方法,則它是可以調用的。
>>> f = lambda x,y : x+y
>>> callable(f) # f是函數對象,可調用
True
>>> a = 10 # a 不可調用
>>> callable(a)
False
10、
chr(i)
:傳回編碼值 i 對應的字元(str類型),i 的有效值為 0 到 1114111。與
ord()
正好相反。
>>> chr(97)
'a'
11、
classmethod(function)
:傳回一個類方法。
12、
compile()
:編譯一個源,傳回一個代碼對象,該代碼對象可以用來作為exec()或者eval()的參數。
13、
complex(re, im)
:複數的構造函數,re 為傳回複數對象的實數部分,im 為虛數部分。
14、
delattr(object, name)
:删除一個對象的屬性,相當于
del object.name
。
15、
dict()
:字典類型的構造函數。
16、
dir()
:傳回一個包含了 object 所有屬性的清單對象,如果沒有參數,則包含目前作用域的所用屬性。
17、
divmod(a, b)
:傳回一個元組
(a//b, a%b)
。
18、
enumerate(iterable, start=0)
:傳回一個可疊代的 enumerate object,對其使用 next() 得到的是包含索引和元素的tuple,通常用于同時周遊索引和元素:
>>> seasons = ['Spring', 'Summer', 'Fall', 'Winter']
>>> list(enumerate(seasons))
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
>>> for x in enumerate(seasons): # 周遊
... print(x, end=' ')
...
(0, 'Spring') (1, 'Summer') (2, 'Fall') (3, 'Winter')
相當于:
def enumerate(sequence, start=0):
n = start
for elem in sequence:
yield n, elem
n += 1
19、
eval()
:執行一段代碼,傳回執行的結果。
>>> x = 1
>>> eval('x+1')
2
20、
exec()
:也是執行一段代碼,傳回None。
>>> x = 1
>>> exec('x += 10')
>>> x
11
21、
filter(function, iterable)
:過濾器,傳回由使函數 function 傳回True的 iterable 元素組成的疊代器。
>>> lst = [1, 2, 3, 4, 5, 6, 7, 8]
>>> f = lambda x: x%2==0
>>> list(filter(f, lst))
[2, 4, 6, 8]
22、
float(x)
:傳回一個浮點型的對象,無參時傳回0.0
23、
format(value[, spec])
:格式化一個值,當參數是一個自定義對象的時候,該對象需要實作__format__()方法。
>>> format(3.1415926, '7.3g')
' 3.14'
24、
frozenset()
: frozenset 的構造函數。顧名思義,frozenset是一種 set 類型,且不可改變(沒有add、remove等方法)。
25、
getattr(object, name)
:獲得對象的name屬性,當該屬性不存在的時候可以使用一個預設值作為傳回值。
26、
globals()
:傳回一個包含目前所有全局符号和對應值的字典。
27、
hasattr(object, name)
:判斷對象是否有name屬性。
28、
hash(object)
:傳回對象的 hash 值,object 必須是可哈希的。注意:所有不可變的内置類型都是 hashable 的,比如 string,tuple;所有可變的内置類型都是 unhashable 的,比如 list,dict(即沒有__hash__()方法)。
29、
help()
:檢視一個對象的幫助文檔。
30、
hex(x)
:将一個整數轉為小寫的十六進制字元串(以’0x’開頭),如果不是int對象,需要定義 __index__()方法。
31、
id()
:傳回一個對象的 id 身份,可以看作該對象的記憶體位址。
32、
input()
:讀取一行輸入并傳回一個字元串。
33、
int(x, base=10)
:傳回相應進制的 int 值。
34、
isinstance(object, class)
:判斷對象 object 是不是類 class 或其派生類的執行個體。
35、
issubclass(class,baseclass)
:判斷一個類是否是另一個類的子類。
36、
iter()
:傳回一個可疊代的對象。
37、
len()
:傳回一個長度值,與 object 中的__len__()有關。
38、
list()
: list 的構造函數。
39、
locals()
:傳回一個包含目前局部符号和對應值的字典,與
globals()
對應。
40、
map(function, iterable)
:映射函數,将 iterable 中的每個元素應用到 function 函數,傳回由所有結果組成的疊代器。
>>> it = map(lambda x: x*2, [1,2,3,4])
>>> list(it)
[2, 4, 6, 8]
41、
max()
:最大值。
42、
min()
:最小值。
43、
memoryview(obj)
:傳回一個 memory view 對象。
44、
next(iterator)
:産生下一個生成值,與__next__()有關。
45、
object()
:略。
46、
oct(x)
:将一個整數轉為一個八進制字元串。如果不是 int 對象,需要定義__index__()方法。
47、
open()
:打開一個檔案,傳回對應的檔案對象。
48、
ord(c)
:傳回字元 c 的編碼值,與
chr(i)
相反。
>>> ord('a')
97
49、
pow(x, y[, z])
:
pow(x, y)
相當于
x**y
,
pow(x, y, z)
相當于
pow(x, y) % z
。
50、
print()
:列印輸出。
51、
property(fget=None, fset=None, fdel=None, doc=None)
:函數 property() 的作用就是把類中的方法當作屬性來通路。看下面的例子:
class C:
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.")
為了操作資料成員 __x,我們需要使用 getx、setx、delx 方法,很麻煩。但是如果通過 property 函數将方法綁定到成員x,那麼當擷取成員x的值時,就會調用getx函數;當給成員x指派時,就會調用setx函數;當删除x時,就會調用delx函數:
c = C()
print(c.x) # 相當于c.getx()
c.x = 20 # 相當于c.setx(20)
del c.x # 相當于c.delx()
這樣通過 x 間接調用方法操作 __x 就友善多了。
52、
range(start, stop[, step])
:傳回一個序列。
53、
repr(object)
:将對象轉化為可列印的字元串。
54、
reversed()
:倒序序列,對象需要實作__reversed__()方法。
55、
round(number[, ndigits])
:把浮點數轉變成指定小數位數的數,ndigits預設為0。
>>> round(1.75368, 3)
1.754
56、
set()
: set 的構造函數。
57、
setattr(object, name, value)
:為一個對象的name屬性設定一個value值。
58、
slice(start,stop[,step])
:切片函數,分割一個可分割的對象,傳回其中的一部分。
59、
sorted()
:排序。
60、
staticmethod(function)
:傳回一個靜态的方法。要知道,一個類的靜态方法沒有隐式的第一個 self 參數,因為靜态方法是獨立于執行個體對象的:
class C:
@staticmethod
def f(arg1, arg2, ...): ...
61、
str()
:字元串的構造函數。
62、
sum()
:求和。
63、
super()
: super() 常用于繼承中調用父類的方法。例如,類的繼承中,通常需要調用父類的構造方法,以初始化父類部分,有兩種方法能達到這個目的。
方法一:調用未綁定的父類構造方法
class A:
def __init__(self):
self.a = 'A_method'
class B:
def __init__(self):
self.b = 'B_method'
class C(A, B):
def __init__(self):
A.__init__(self)
B.__init__(self)
# ...其他超類
self.c = 'C_method'
方法二:使用super函數
class A:
def __init__(self):
super().__init__()
self.a = 'A_method'
class B:
def __init__(self):
super().__init__()
self.b = 'B_method'
class C(A, B):
def __init__(self):
super().__init__() # 等價于super(C,self).__init__()
self.c = 'C_method'
可以看出,方法一更直覺,但是方法二使用 super 函數可以一次初始化所有超類(但要確定所有的超類的構造方法都使用了super函數)。當繼承結構很複雜時,方法二明顯更适用,當然 super 不僅可以用于構造方法還可以用于其他方法。
使用 super 還有一個好處,就是當改變父類名時,不需要再去修改其他地方,便于代碼的維護。
64、
tuple()
:元組的構造函數。
65、
type()
:傳回一個對象的類型,傳回值與
object.__class__
一樣。
66、
vars(object)
:傳回 object 中所有屬性與對應值的字典。沒有參數時作用和
locals()
一樣。
67、
zip()
: zip 函數接受一系列可疊代的對象作為參數,将對象中對應的元素打包成一個個tuple(元組)。
68、
__import__()
:通過import語句調用。
附:reduce函數
在Python 3裡,
reduce()
函數已經被從全局名字空間裡移除了,它現在被放置在
functools
子產品裡。函數原型如下:
reduce(function, iterable[, initializer])
function 必須是二進制函數, 在省略第三個參數的情況下,函數先對 iterable 中的第1,2個資料進行操作,得到的結果再與第三個資料用 function() 函數運算……依次類推,最後得到一個結果。 如果初始值 initializer 給定,第一次調用會是 initializer 和第一個元素而不是序列的頭兩個元素。
>>> from functools import reduce
>>> reduce(lambda x,y: x+y, [1,2,3,4,5])
15
>>> reduce(lambda x,y: x+y, [1,2,3,4,5], 10)
25
map用于映射,reduce用于歸并。
(全文完)
個人站點:http://songlee24.github.com