函數是第一類對戲那個,即函數能夠看成數據傳遞python
1.能夠被引用閉包
2.能夠看成參數傳遞函數
3.返回值能夠是函數對象
def max(x,y): return x if x > y else y def max4(a,b,c,d): res1=max(a,b) res2=max(res1,c) res3=max(res2,d) return res3 print(max4(1,2,3,4))
1.名稱空間:指的就是存放值與內存地址綁定關係的地方。內存
內置名稱空間作用域
存放的是python解釋器自帶的名字引用
產生:python解釋器啓動時則產生程序
銷燬:python解釋器關閉時則銷燬數據
全局名稱空間:在頂級定義的名字參數傳遞
產生:執行python程序時產生
銷燬:python程序執行完畢後銷燬
局部名稱空間:在函數內定義的名字
產生:在函數調用時臨時產生
銷燬:在函數調用完畢後銷燬
三種名稱空間產生前後順序:內置》全局》局部
查找名字的順序:從當前想外查找 局部》全局》內置
2.做用域:指的是做用範圍
全局做用域:包含內置與全局名稱空間的名字
特色:全局存活,全局有效
局部做用域:包含局部名稱空間的名字
特色:臨時存活,局部有效
!!!做用域關係時在函數定義階段就已經固定死了,與調用位置無關。
內部函數包含對外部做用域而非全局做用域的引用
閉包函數的意義與應用
閉包的意義:返回的函數對象,不單單是一個函數對象,在該函數外還包裹了一層做用域,這使得,該函數不管在何處調用,優先使用本身外層包裹的做用域 #應用領域:延遲計算(原來咱們是傳參,如今咱們是包起來)