【Python學習日記】B站小甲魚:內嵌函式 閉包 和 lambda表示式
阿新 • • 發佈:2020-08-23
global關鍵字
在函式內部使用 global關鍵字可以修改並使用區域性變數為全域性變數
內嵌函式(內部函式) python是支援函式的巢狀的,下面的程式會執行fun1()和fun2()的功能
def fun1(): print('fun1被呼叫') def fun2(): print('fun2被呼叫') fun2() fun1()
閉包 下面的程式列印FunX(8)(5)也是一樣的結果
def FunX(x): def FunY(y): return x*y return FunY i = FunX(8)print(i(5))
如果在巢狀函式裡要使用區域性變數可以使用關鍵字 nonlocal
def FunX(x): def FunY(): nonlocal x x *= x return x return FunY() print(FunX(5))
匿名函式 lambda 以下兩個程式是等價的
def ds(x): return 2*x +1 print(ds(5)) g = lambda x: 2 * x+1 print(g(5))
下面這兩個程式也是等價的
def add(x,y): returnx+y add(4,5) g =lambda x,y: x+y print(g(3,4))
兩個比較牛逼的BIF
過濾器filter()和對映map()
filter(函式,序列) 把引數作為函式的實際引數,把返回true的函式列成新的列表 函式的功能是返回偶數
def odd(x): return x%2 temp = range(10) show = filter(odd,temp) print(list(show))
用lambda函式改寫上面那個程式就是
show = filter(lambda x:x%2,range(10)) print(list(show))
map(函式,序列) 將序列中的每一個元素作為函式的引數進行加工,直到全部加工完畢返回新的序列
print(list(map(lambda x:x*2,range(10))))
上面這個函式返回(0,2,4,6,8,10,12,14,16,18,20)