day13 內建函式

哄哄的錘石真菜發表於2018-11-19

參考資料: https://www.processon.com/view/link/5b4ee15be4b0edb750de96ac

內建函式:

作⽤域相關:

locals()     返回當前作用域中的名字

globals()    返回全域性作用域中的名字

迭代器相關:   

range()    ⽣成資料   

next()   迭代器向下執⾏ ⼀次, 內部實際使用了__next__()⽅法返回迭代器的下一個專案   

iter()     獲取迭代器, 內部實際使用的是__iter__()方法來獲取迭代器

 

字元串型別程式碼的執行   

eval()   執行字元串型別的程式碼. 並返回最終結果

exec()       執行字元串型別的程式碼

compile()   將字串型別的程式碼變異. 程式碼物件能夠通過exec語句句來執行或者eval()進行求 值

有返回值的字元串形式的程式碼用eval(). 沒有返回值的字元串形式的程式碼用exec(). 一般很少用 到compile()

輸入和輸出相關:   

input()    獲取使用者輸入的內容   

print()    列印輸出 記憶體相關:   

hash()    獲取到物件的雜湊值(int, str, bool, tuple)   

id()        獲取到物件的記憶體地址

檔案操作相關:   

open()    用於口開啟⼀一個檔案, 建立一個檔案句柄

模組相關:   

__import__()    用於動態載入類和函式

幫助:    help()    函式用於檢視函式或模組用途的詳細說明

呼叫相關:   

callable()    用於檢查一個物件是否是可呼叫的. 如果返回True, object有可能呼叫失敗, 但 如果返回False. 那呼叫絕對不會成功

檢視內建屬性:    

dir()    檢視物件的內建屬性, 方法. 訪問的是物件中的__dir__()⽅方法 基礎資料型別相關:    

數字相關:        

bool()  將給定的資料轉換成bool值. 如果不給值. 返回False       

int()     將給定的資料轉換成int值. 如果不給值, 返回0       

float()  將給定的資料轉換成float值. 也就是⼩小數       

complex()  建立一個複數. 第一個引數為實部, 第二個引數為虛部. 或者第一個引數直接 用字元串來描述複數

 

進位制轉換:       

bin()    將給的引數轉換成二進位制       

otc()    將給的引數轉換成八進位制       

hex()    將給的引數轉換成十六進位制   

數學運算:       

abs()            返回絕對值       

divmode()     返回商和餘數       

round()        四捨五入        

pow(a, b)    求a的b次冪, 如果有三個引數. 則求完次冪後對第三個數取餘       

sum()    求和       

min()    求最小值       

max()    求最大值

和資料結構相關:   

列列表和元組:       

list()        將一個可迭代物件轉換成列列表       

tuple()    將一個可迭代物件轉換成元組       

reversed()    將一個序列列翻轉, 返回翻轉序列列的迭代器       

slice()    列表的切片

字元串相關:       

str()            將資料轉化成字元串       

format()     與具體資料相關, 用於計算各種小數, 精算等

bytes()  把字元串轉化成bytes型別

bytearray()    返回一個新位元組陣列. 這個數字里的元素是可變的, 並且每個元素的值得範 圍是[0,256)

memoryview()  檢視bytes在記憶體中的情況

ord()    輸入字元找帶字元編碼的位置       

chr()    輸入位置數字找出對應的字元       

ascii()  是ascii碼中的返回該值 不是就返回u…

repr()    返回一個物件的官方表示形式

資料集合:       

dict()    建立一個字典 

set()     建立一個集合       

frozenset()    建立一個凍結的集合. 凍結的集合不能進行新增和刪除操作   

其他相關:        

len()    返回一個物件中的元素的個數       

sorted()    對可迭代物件進行排序操作

enumerate()    獲取集合的列舉物件

all()      可迭代物件中全部是True, 結果才是True       

any()    可迭代物件中有一個是True, 結果就是True

zip()    函式用於將可迭代的物件作為引數, 將物件中對應的元素打包成一個個元組, 然 後返回由這些元組成的開了表. 如果各個迭代器的元素個數不一致, 則返回列表長度與最短的物件相同.

filter()     過濾     

map()    會根據提供的函式對指定序列列做對映(lamda)

 

⼀. lamda匿名函式.

lambda表示的是匿名函式. 不需要用def來宣告, 一句話就可以宣告出一個函式

語法: 函式名 = lambda 引數: 返回值

注意: 1. 函式的引數可以有多個. 多個引數之間用逗號隔開

2. 匿名函式不管多複雜. 只能寫一行, 且邏輯結束後直接返回資料

3. 返回值和正常的函式一樣, 可以是任意資料型別
匿名函式並不是說一定沒有名字. 這里前面的變量就是一個函式名. 說他是匿名原因是我們通 過__name__檢視的時候是沒有名字的. 統一都叫lambda. 在呼叫的時候沒有什麼特別之處. 像正常的函式呼叫即可

 

⼆. sorted()   

排序函式.     

語法: sorted(Iterable, key=None, reverse=False)       

Iterable: 可迭代物件       

key: 排序規則(排序函式), 在sorted內部會將可迭代物件中的每一個元素傳遞給這個函 數的引數. 根據函式運算的結果進行排序       

reverse: 是否是倒敘. True: 倒敘, False: 正序

 

三. filter()   

篩選函式    語法: filter(function. Iterable)       

function: 用來篩選的函式. 在filter中會自動的把iterable中的元素傳遞給function. 然後 根據function返回的True或者False來判斷是否保留此項資料     

Iterable: 可迭代物件 

 

四. map()    對映函式   

語法: map(function, iterable) 可以對可迭代物件中的每一個元素進行對映. 分別取執行 function   

計算列表中每個元素的平方 ,返回新列表 

 

五. 遞迴    在函式中呼叫函式本身. 就是遞迴  

在python中遞迴的深度最大到998 (經測試)

遞迴的應用:     我們可以使用遞迴來遍歷各種樹形結構, 比如我們的資料夾系統. 可以使用遞迴來遍歷該 資料夾中的所有檔案

 1 import os 
 2 def read(filepath, n):    
 3     files = os.listdir(filepath)    # 獲取到當前資料夾中的所有檔案    
 4     for fi in files:    # 遍歷資料夾中的檔案, 這里獲取的只是本層檔名                    
 5          fi_d = os.path.join(filepath,fi)  # 加入資料夾 獲取到資料夾+檔案       
 6          if os.path.isdir(fi_d): # 如果該路徑下的檔案是⽂資料夾           
 7              print("	"*n, fi)           
 8              read(fi_d, n+1)     # 繼續進行相同的操作        
 9         else:            
10         print("	"*n, fi)   # 遞迴出口. 最終在這里隱含著return
11 #遞迴遍歷⽬目錄下所有檔案
12  read(`../old/`, 0)       

六. 二分查詢   

二分查詢. 每次能夠排除掉一半的資料.  查詢的效率非常高. 但是侷限性比較大. 必須是有 序列才可以使⽤二分查詢     要求: 查詢的序列必須是有序列. 

 

相關文章