Python全棧學習筆記day 15:內建函式
全部內建函式列表:
函式分類效果圖:
https://www.processon.com/view/link/597fcacfe4b08ea3e2454ece?pw=G76Z
G76Z
68個函式,6大類:
一、作用域相關
globals()——獲取全域性變數的字典
locals()——獲取執行本方法所在名稱空間內的區域性變數的字典
二、其他
1、字串型別程式碼的執行:
eval() 將字串型別的程式碼執行,有返回值
exec()將字串型別的程式碼執行,無返回值
compile 將字串型別的程式碼編譯。程式碼物件能夠通過exec語句來執行或者eval()進行求值。
compile引數說明:
1. 引數source:字串或者AST(Abstract Syntax Trees)物件。即需要動態執行的程式碼段。
2. 引數 filename:程式碼檔名稱,如果不是從檔案讀取程式碼則傳遞一些可辨認的值。當傳入了source引數時,filename引數傳入空字元即可。
3. 引數model:指定編譯程式碼的種類,可以指定為 ‘exec’,’eval’,’single’。當source中包含流程語句時,model應指定為‘exec’;當source中只包含一個簡單的求值表示式,model應指定為‘eval’;當source中包含了互動式命令語句,model應指定為'single'。
code1 = 'for i in range(0,10): print (i)'
compile1 = compile(code1,'','exec')
exec(compile1)
0
1
2
3
4
5
6
7
8
9
2、輸入輸出相關:
input() 輸入
print() 輸出:
print原始碼剖析:
def print(self, *args, sep=' ', end='\n', file=None): # known special case of print
"""
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
file: 預設是輸出到螢幕,如果設定為檔案控制代碼,輸出到檔案
sep: 列印多個值之間的分隔符,預設為空格
end: 每一次列印的結尾,預設為換行符
flush: 立即把內容輸出到流檔案,不作快取
"""
列印進度條:
import time
for i in range(0,101,2):
time.sleep(0.1)
char_num = i//2 #列印多少個'*'
per_str = '\r%s%% : %s\n' % (i, '*' * char_num) if i == 100 else '\r%s%% : %s'%(i,'*'*char_num)
print(per_str,end='', flush=True)
3、記憶體相關:
id(o) o是引數,返回一個變數的記憶體地址
hash(o) o是引數,返回一個可hash變數的雜湊值,不可hash的變數被hash之後會報錯。
t = (1,2,3)
l = [1,2,3]
print(hash(t)) #可hash
print(hash(l)) #會報錯
hash函式會根據一個內部的演算法對當前可hash變數進行處理,返回一個int數字。
*每一次執行程式,內容相同的變數hash值在這一次執行過程中不會發生改變。
4、檔案操作相關:
open() 開啟一個檔案,返回一個檔案操作符(檔案控制代碼)
操作檔案的模式有r,w,a,r+,w+,a+ 共6種,每一種方式都可以用二進位制的形式操作(rb,wb,ab,rb+,wb+,ab+)
可以用encoding指定編碼.
5、模組操作相關:
import匯入一個模組 import time
6、幫助方法:
在控制檯執行help()進入幫助模式。可以隨意輸入變數或者變數的型別。輸入q退出
或者直接執行help(o),o是引數,檢視和變數o有關的操作。。。
7、呼叫相關:
callable(o),o是引數,看這個變數是不是可呼叫。
如果o是一個函式名,就會返回True
8、檢視引數所屬型別的所有內建方法:
dir() 預設檢視全域性空間內的屬性,也接受一個引數,檢視這個引數內的方法或變數
三、基礎資料型別——和數字相關:
資料型別相關:bool,int,float,complex
進位制轉換相關:bin,oct,hex
數學運算:abs,divmod,min,max,sum,round,pow
三、基礎資料型別——和資料結構相關:
序列——列表和元組相關的:list和tuple
序列——字串相關的:str,format,bytes,bytearry,memoryview,ord,chr,ascii,repr
format: http://www.cnblogs.com/Eva-J/articles/7266245.html
重點掌握:
filter()函式接收一個函式 f 和一個list,這個函式 f 的作用是對每個元素進行判斷,返回 True或 False,filter()根據判斷結果自動過濾掉不符合條件的元素,返回由符合條件元素組成的新list。
map函式應用於每一個可迭代的項,返回的是一個結果list。如果有其他的可迭代引數傳進來,map函式則會把每一個引數都以相應的處理函式進行迭代處理。map()函式接收兩個引數,一個是函式,一個是序列,map將傳入的函式依次作用到序列的每個元素,並把結果作為新的list返回。
filter的結果集合 <= 執行之前的個數,filter只管篩選,不會改變原來的值
map 執行前後元素個數不變,值可能發生改變
def is_odd(x):
return x % 2 == 1
ret = filter(is_odd, [1, 6, 7, 12, 17])
print(ret)
for i in ret:
print(i)
<filter object at 0x0025E3D0>
1
7
17
ret = map(abs,[1,-4,6,-8])
print(ret)
for i in ret:
print(i)
1
4
6
8
zip:
l = [1,2,3,4,5]
l2 = ['a','b','c','d']
l3 = ('*','**',[1,2])
d = {'k1':1,'k2':2}
for i in zip(l,l2,l3,d):
print(i)
(1, 'a', '*', 'k1')
(2, 'b', '**', 'k2')
sorted:
對給定的List L進行排序,
方法1.sort進行排序,在原列表的基礎上進行排序
方法2.sorted進行排序,生成了一個新列表 不改變原列表 佔記憶體
l = [1,-4,6,5,-10]
l.sort(key = abs) # 在原列表的基礎上進行排序
print(l)
[1, -4, 5, 6, -10]
l = [1,-4,6,5,-10]
print(sorted(l,key=abs,reverse=True)) # 生成了一個新列表 不改變原列表 佔記憶體
print(l)