1、數學運算類
函數名 | 函數功能 | 備注 |
---|---|---|
abs(x) | 求絕對值 | 1、參數可以是整型,也可以是複數2、若參數是複數,則傳回複數的模 |
complex([real[, imag]]) | 建立一個複數 | |
divmod(a, b) | 分别取商和餘數 | 注意:整型、浮點型都可以,傳回值為一個元組 |
float([x]) | 将一個字元串或數轉換為浮點數。 | 如果無參數将傳回0.0 |
int([x[, base]]) | 将一個字元轉換為int類型 | base表示進制
|
long([x[, base]]) | 将一個字元轉換為long類型 | |
pow(x, y[, z]) | 傳回x的y次幂 | Equivalent to x**y (with two arguments) or x**y % z (with three arguments) |
range([start], stop[, step]) | 産生一個序列 | 預設從0開始 |
round(x[, n]) | 四舍五入 | n : 保留小數點後n位,預設為0 |
sum(iterable[, start]) | 對集合求和 | |
oct(x) | 将一個數字轉化為8進制 | |
hex(x) | 将整數x轉換為16進制字元串 | |
chr(i) | 傳回整數i對應的ASCII字元 | |
bin(x) | 将整數x轉換為二進制字元串 | |
bool([x]) | 将x轉換為Boolean類型 |
2. 集合類操作
函數名稱 | ||
---|---|---|
basestring() | str和unicode的超類 | 不能直接調用,可以用作isinstance判斷 |
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() | set對象執行個體化 | |
frozenset([iterable]) | 産生一個不可變的set | |
str([object]) | 轉換為string類型 | |
sorted(iterable[, cmp[, key[, reverse]]]) | 隊集合排序 | |
tuple([iterable]) | 生成一個tuple類型 | |
xrange([start], stop[, step]) | xrange()函數與range()類似,但xrnage()并不建立清單,而是傳回一個xrange對象 | 它的行為與清單相似,但是隻在需要時才計算清單值,當清單很大時,這個特性能為我們節省記憶體 |
3. 邏輯判斷
all(iterable) | 集合中的元素都為真的時候為真 | 特别的,若為空串傳回為True |
any(iterable) | 1、集合中的元素有一個為真的時候為真 | 特别的,若為空串傳回為False |
cmp(x, y) | 如果x < y ,傳回負數;x == y, 傳回0;x > y,傳回正數 |
4. 映射
callable(object) | 檢查對象object是否可調用 | 1、類是可以被調用的2、執行個體是不可以被調用的,除非類中聲明了call方法 |
classmethod() | 注解,用來說明這個方式是個類方法 | 類方法即可被類調用,也可以被執行個體調用,類方法類似于Java中的static方法,類方法中不需要有self參數 |
compile(source, filename, mode[, flags[, dont_inherit]]) | 将source編譯為代碼或者AST對象 | 代碼對象能夠通過exec語句來執行或者eval()進行求值。 |
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的函數,可以為None2、參數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() | ||
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, …]) |
5.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]]) | 打開檔案 | |
列印函數 | ||
raw_input([prompt]) | 設定輸入 | 輸入都是作為字元串處理 |
6. help()–幫助資訊
&内置方法
内置方法 | 說明 |
__init__(self,...) | 初始化對象,在建立新對象時調用 |
__del__(self) | 釋放對象,在對象被删除之前調用 |
__new__(cls,*args,**kwd) | 執行個體的生成操作 |
__str__(self) | 在使用print語句時被調用 |
__getitem__(self,key) | 擷取序列的索引key對應的值,等價于seq[key] |
__len__(self) | 在調用内聯函數len()時被調用 |
__cmp__(stc,dst) | 比較兩個對象src和dst |
__getattr__(s,name) | 擷取屬性的值 |
__setattr__(s,name,value) | 設定屬性的值 |
__delattr__(s,name) | 删除name屬性 |
__getattribute__() | __getattribute__()功能與__getattr__()類似 |
__gt__(self,other) | 判斷self對象是否大于other對象 |
__lt__(slef,other) | 判斷self對象是否小于other對象 |
__ge__(slef,other) | 判斷self對象是否大于或者等于other對象 |
__le__(slef,other) | 判斷self對象是否小于或者等于other對象 |
__eq__(slef,other) | 判斷self對象是否等于other對象 |
__call__(self,*args) | 把執行個體對象作為函數調用 |
__init__():
__init__方法在類的一個對象被建立時,馬上運作。這個方法可以用來對你的對象做一些你希望的初始化。注意,這個名稱的開始和結尾都是雙下劃線。
代碼例子:
#!/usr/bin/python # Filename: class_init.py class Person: def __init__(self, name): self.name = name def sayHi(self): print 'Hello, my name is', self.name p = Person('Swaroop') p.sayHi() 輸出: Hello, my name is Swaroop |
說明:__init__方法定義為取一個參數name(以及普通的參數self)。在這個__init__裡,我們隻是建立一個新的域,也稱為name。注意它們是兩個不同的變量,盡管它們有相同的名字。點号使我們能夠區分它們。最重要的是,我們沒有專門調用__init__方法,隻是在建立一個類的新執行個體的時候,把參數包括在圓括号内跟在類名後面,進而傳遞給__init__方法。這是這種方法的重要之處。現在,我們能夠在我們的方法中使用self.name域。這在sayHi方法中得到了驗證。
__new__():
__new__()在__init__()之前被調用,用于生成執行個體對象.利用這個方法和類屬性的特性可以實作設計模式中的單例模式.單例模式是指建立唯一對象嗎,單例模式設計的類隻能執行個體化一個對象.
# -*- coding: UTF-8 -*- class Singleton(object): __instance = None # 定義執行個體 def __init__(self): pass def __new__(cls, *args, **kwd): # 在__init__之前調用 if Singleton.__instance is None: # 生成唯一執行個體 Singleton.__instance = object.__new__(cls, *args, **kwd) return Singleton.__instance |
__getattr__()、__setattr__()和__getattribute__():
當讀取對象的某個屬性時,python會自動調用__getattr__()方法.例如,fruit.color将轉換為fruit.__getattr__(color).當使用指派語句對屬性進行設定時,python會自動調用__setattr__()方法.__getattribute__()的功能與__getattr__()類似,用于擷取屬性的值.但是__getattribute__()能提供更好的控制,代碼更健壯.注意,python中并不存在__setattribute__()方法.
代碼例子:
class Fruit(object): def __init__(self, color = "red", price = 0): self.__color = color self.__price = price def __getattribute__(self, name): # 擷取屬性的方法 return object.__getattribute__(self, name) def __setattr__(self, name, value): self.__dict__[name] = value if __name__ == "__main__": fruit = Fruit("blue", 10) print fruit.__dict__.get("_Fruit__color") # 擷取color屬性 fruit.__dict__["_Fruit__price"] = 5 print fruit.__dict__.get("_Fruit__price") # 擷取price屬性 |
__getitem__():
如果類把某個屬性定義為序列,可以使用__getitem__()輸出序列屬性中的某個元素.假設水果店中銷售多鐘水果,可以通過__getitem__()方法擷取水果店中的沒種水果
class FruitShop: def __getitem__(self, i): # 擷取水果店的水果 return self.fruits[i] shop = FruitShop() shop.fruits = ["apple", "banana"] print shop[1] for item in shop: # 輸出水果店的水果 print item, 輸出為: banana apple banana |
__str__():
__str__()用于表示對象代表的含義,傳回一個字元串.實作了__str__()方法後,可以直接使用print語句輸出對象,也可以通過函數str()觸發__str__()的執行.這樣就把對象和字元串關聯起來,便于某些程式的實作,可以用這個字元串來表示某個類
class Fruit: '''Fruit類''' #為Fruit類定義了文檔字元串 def __str__(self): # 定義對象的字元串表示 return self.__doc__ fruit = Fruit() print str(fruit) # 調用内置函數str()出發__str__()方法,輸出結果為:Fruit類 print fruit #直接輸出對象fruit,傳回__str__()方法的值,輸出結果為:Fruit類 |
__call__():
在類中實作__call__()方法,可以在對象建立時直接傳回__call__()的内容.使用該方法可以模拟靜态方法
class Fruit: class Growth: # 内部類 def __call__(self): print "grow ..." grow = Growth() # 調用Growth(),此時将類Growth作為函數傳回,即為外部類Fruit定義方法grow(),grow()将執行__call__()内的代碼 if __name__ == '__main__': fruit.grow() # 輸出結果:grow ... Fruit.grow() # 輸出結果:grow ... |
匿名函數
python 使用 lambda 來建立匿名函數。
所謂匿名,意即不再使用 def 語句這樣标準的形式定義一個函數。
- lambda 隻是一個表達式,函數體比 def 簡單很多。
- lambda的主體是一個表達式,而不是一個代碼塊。僅僅能在lambda表達式中封裝有限的邏輯進去。
- lambda 函數擁有自己的命名空間,且不能通路自有參數清單之外或全局命名空間裡的參數。
- 雖然lambda函數看起來隻能寫一行,卻不等同于C或C++的内聯函數,後者的目的是調用小函數時不占用棧記憶體進而增加運作效率。
文法
lambda 函數的文法隻包含一個語句,如下:
lambda [arg1 [,arg2,.....argn]]:expression
如下執行個體:
#!/usr/bin/python3
# 可寫函數說明sum = lambda arg1, arg2: arg1 + arg2;
# 調用sum函數print ("相加後的值為 : ", sum( 10, 20 ))print ("相加後的值為 : ", sum( 20, 20 ))