1. 程式人生 > >Python全棧學習筆記day 15:內建函式

Python全棧學習筆記day 15:內建函式

全部內建函式列表:

    Built-in Functions    
abs() dict() help() min() setattr()
all() dir() hex() next() slice()
any() divmod() id() object() sorted()
ascii() enumerate() input() oct() staticmethod()
bin() eval() int() open() str()
bool() exec() isinstance() ord() sum()
bytearray() filter() issubclass() pow() super()
bytes() float() iter() print() tuple()
callable() format() len() property() type()
chr() frozenset() list() range() vars()
classmethod() getattr() locals() repr() zip()
compile() globals() map() reversed() __import__()
complex() hasattr() max() round()  
delattr() hash() memoryview() set()  

 

函式分類效果圖:

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)