python提供的強大的內置函數,接下來我們看一看這些函數都有哪些作用。 abs()求絕對值。 print(abs(-1)) print(abs(0)) 運行結果 1 0 all()傳遞可迭代對象,可迭代對象每個值得bool值都為Ture返回Ture,有一個為False,結果返回False。 pri ...
python提供的強大的內置函數,接下來我們看一看這些函數都有哪些作用。
abs()求絕對值。
print(abs(-1)) print(abs(0)) 運行結果 1 0abs
all()傳遞可迭代對象,可迭代對象每個值得bool值都為Ture返回Ture,有一個為False,結果返回False。
print(all(i for i in range(10)))#False print(all(i for i in range(1,10)))#Trueall()
sum()將對象轉為可迭代對象求和。
res=sum(i for i in range(3)) print(res)#3sum()
any()傳遞可迭代對象,可迭代對象中有一個值的bool值為Ture返回Ture,所有值都為False,結果返回False。
print(any([]))#False print(any([None,0,'',{},1]))#Trueany()
bin()將傳入值轉化為二進位。
print(bin(3))#0b11bin()
bool()返回bool值。
print(bool(0))#False print(bool(None))#False print(bool(''))#Falsebool()
bytes()把字元串轉為位元組模式。
print(bytes('hello',encoding='utf-8'))#b'hello'bytes()
callable()能否被調用,返回bool值。
def test(): pass print(callable(test))#True print(callable(sum))#Truecallable()
chr()與ord()ASCII碼對應關係。
print(chr(67))#C print(chr(65))#A print(ord('A'))#65chr()ord()
classmethod,staticmethod,property面向對象三賤客。
classmethod
class people: country = 'china' # 類方法,用classmethod來進行修飾 @classmethod def getCountry(cls): #類方法自動將類作為cls傳遞進函數內 return cls.country @classmethod def setCountry(cls, country): cls.country = country p = people() print(p.getCountry()) # 可以用過實例對象引用 print(people.getCountry()) # 可以通過類對象引用 p.setCountry('japan') print(p.getCountry()) 運行結果: china china japanclassmethod
staticmethod
class people: country = 'china' @staticmethod # 靜態方法使用裝飾器方式綁定,並且作用和普通函數一樣並不會自動傳遞self def getCountry(): return people.country print(people.getCountry()) 運行結果: chinastaticmethod
property
class people: __name = 'jeff' __age = 12 def set(self): print(self.__name) print(self.__age) p = people() #print(p.__name,p.__age) #AttributeError: 'people' object has no attribute '__name' p.set() 運行結果; jeff 12property
complex()複數,定義複數
x=complex(1-2j) print(x.real)#1.0 print(x.imag)#-2.0 x=1-2j print(x.real)#1.0 print(x.imag)#-2.0complex()
數據類型
int()整型,isinstance()判斷數據類型
num=1 #num=int(1) print(type(num)) #查看num的類型<class 'int'> print(isinstance(num,int)) #判斷num是否為int類型True print(num is 1) #is 是身份運算,根據id去判斷身份Trint()isinstance()
float()把數轉換成浮點類型。
str()轉化為字元串。
list()把任何iterable轉化為列表。
x=list(i for i in range(10)) print(x)#[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]list()
tuple()轉化為元組。
dict()
d={'a':1} d=dict(x=1,y=2,z=3) print(d)#{'z': 3, 'x': 1, 'y': 2}dict()
set()轉化為集合,是可迭代對象,可轉化為list。
frozenset()不可變集合
s={1,2,3,4,4} print(s) s.add(5) print(s)#set可以增但是不可變集合都不可以 f=frozenset({1,2,3,4}) print(type(f))frozenset()
dir()對象下麵有哪些可調用方法。
divmod()返回元組,tuple(x//y,x%y),前端分頁功能。
print(divmod(100,33))#(3, 1)divmod()
enumerate()迭代器
for i in enumerate(['a','b','c','d']): print(i) 運行結果: (0, 'a') (1, 'b') (2, 'c') (3, 'd') for i in enumerate({'x':1,'y':2}): print(i) 運行結果: (0, 'y') (1, 'x')enumerate()
format()格式化輸出
globals()獲取全局變數的字典,locals()獲取執行本方法所在命名空間內的局部變數的字典.
def func(): x = 1 y = 2 print(locals()) #列印局部作用域中的名字 print(globals()) #列印全局作用域中的名字globals()locals()
hash()得到哈希值,用來校驗數據完整性,不可逆推。
s='hello' print(hash(s))#-6379790348615061731 s='h' print(hash(s))#5735203904575971755hash()
help()獲取幫助。
hex()轉16進位
print(hex(10))#0xa print(hex(11))#0xbhex()
id()查看唯一標識身份號,is就是判斷id是否相同。
print(id('asdf')) a=1 b=2 print(id(a)) print(id(b)) print(a is b) x='a' y='a' print(id(x)) print(id(y)) print(x is y)id()
input()輸入
iter()把可迭代對象轉化為迭代器。
len()統計長度
max(),min()最大最小值
zip()拉鏈函數?zip把傳入的兩個參數轉為可迭代對象,兩邊各next()放到一個元組。
l1=[1,2,3,4] s='hel' for i in zip(l1,s): print(i) 運行結果: (1, 'h') (2, 'e') (3, 'l')zip()
sorted()把可迭代對象next一遍然後升序放到列表裡。
l=[3,4,1,0,9,10] print(sorted(l)) #返回值是列表,預設是升序 print(sorted(l,reverse=True)) #降序排列sorted()
map()映射,右邊每一個數都根據左邊的規則映射出一個新的列表。
l=[1,2,3,7,5] m=map(lambda item:item**2,l) print(m)#<map object at 0x00000000027CDD68> print(list(m))#print(list(m))map()
from functools import reduce #合併
from functools import reduce #合併 l=list(range(100)) print(l) print(reduce(lambda x,y:x+y,l,100))#5050#reduce可以傳多個值from functools import reduce
filter過濾
name_l=[ {'name':'egon','age':18}, {'name':'dragonFire','age':1000}, {'name':'gaoluchuan','age':9000}, {'name':'fsw','age':10000}, ] f=filter(lambda d:d['age'] > 100,name_l)#左邊返回值ture過濾出來 print(list(f))#[{'name': 'dragonFire', 'age': 1000}, {'name': 'gaoluchuan', 'age': 9000}, {'name': 'fsw', 'age': 10000}]filter
oct()八進位
open()取得文件句柄
pow(x,y,z),x**y%z
range()獲得可迭代對象
rper()也是顯示,str更人性化
reversed()反轉順序
slice()切片,一般也不用這個
vars() 返回局部名稱空間的名字,字典形式。
__import__將字元串導入
__import__('time')__import__
compile()把字元串編譯成位元組碼在運行。
exec()執行代碼或編譯後的字元串,無返回值
eval() 將字元串中表達式轉換為python表達式,有返回值
round(x,[,n]) 四捨五入取x的值,n表示取小數點幾位
最後簡單給這些函數進行分類。
運算類:
函數名 | 函數功能 | 備註 |
---|---|---|
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次冪 | |
range([start], stop[, step]) | 產生一個序列 | 預設從0開始 |
round(x[, n]) | 四捨五入 | |
sum(iterable[, start]) | 對集合求和 | |
oct(x) | 將一個數字轉化為8進位 | |
hex(x) | 將整數x轉換為16進位字元串 | |
chr(i) | 返回整數i對應的ASCII字元 | |
bin(x) | 將整數x轉換為二進位字元串 | |
bool([x]) | 將x轉換為Boolean類型 |
數據類型類:
函數名稱 | 函數功能 | 備註 |
---|---|---|
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對象 | 它的行為與列表相似,但是只在需要時才計算列表值,當列表很大時,這個特性能為我們節省記憶體 |
可迭代類型操作:
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, …]) |
I/O操作:
函數名稱 | 函數功能 | 備註 |
---|---|---|
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]) | 設置輸入 | 輸入都是作為字元串處理 |
匿名函數
比較幾位老師的工資,誰的工資最高。
salaries={ 'egon':3000, 'alex':100000000, 'wupeiqi':10000, 'yuanhao':250 }
直接使用max()得到的是key的最大值,比較values得到的又是最多的錢,如何比較的是錢而得到的是這個錢對應的key呢。
def get_value(k): return salaries[k] print(max(salaries,key=get_value))#alex
max在這裡,把傳入值變成可迭代對象,每次取一個值傳入右邊的函數再比較,最後得出最大值輸出的到最大值的人。
這裡我們定義的get_value函數很簡單,只有單一功能,完全沒有必要,我們可以使用簡單的lambda來一步完成。
lambda k:salaries[k]
匿名函數的調用。
f=lambda k:salaries[k] #匿名函數也可以賦值一個名字,但是這便違反了匿名的初衷 print(f)#<function <lambda> at 0x0000000001D0CBF8> print(f('egon'))#3000
解決上面的問題也更簡便。
print(max(salaries,key=lambda k:salaries[k]))#alex print(min(salaries,key=lambda k:salaries[k]))#yuanhao
zip()函數
print(salaries.keys(),salaries.values()) z=zip(salaries.values(),salaries.keys()) print(z) print(max(z))#取出最大的元組 for i in z: print(i)
sorted()
print(sorted(salaries)) #預設是按照字典salaries的key去排序的 print(sorted(salaries,key=lambda x:salaries[x])) print(sorted(salaries,key=lambda x:salaries[x],reverse=True)) 運行結果: ['alex', 'egon', 'wupeiqi', 'yuanhao'] ['yuanhao', 'egon', 'wupeiqi', 'alex'] ['alex', 'wupeiqi', 'egon', 'yuanhao']