標籤:rar 實現 記憶體 add 邏輯運算 test upper 程式 cti
一、範圍
範圍在定義函數時就已經固定住了,不會隨著調用位置的改變而改變
二、匿名函數
lambda:正常和其他函數進行配合使用。正常無需把匿名函數賦值給一個變數。
f=lambda x:x*xprint(f) #列印指向該函數的記憶體位址print(f(5)) #記憶體位址(5) 調用運行該函數def cala(x): y=x*x return yz=cala(5)print(z)>>><function <lambda> at 0x10137d950>25100
#name=alex #修改為:name=alex_sbf=lambda x:x+‘_sb‘print(f(‘alex‘))
f=lambda x,y,z=10:x+y+z #可以存在預設數值print(f(3,3))>>>>16
f=lambda x,y,z=10:(x+1,y+1,z+1) #如果需要對函數進行返回多個值,需要加括弧print(f(3,3))>>>(4, 4, 11)
#這段代碼def calc(n): return n**nprint(calc(10)) #換成匿名函數calc = lambda n:n**nprint(calc(10))
三、函數式編程
先過
四、map函數:
通過為了靈活實現多個字串的多種變化,進行兩次函數化的程式設計:
def pf(x): return x**2def add_one(x): return x+1def reduce_one(x): return x-1def num_pin(fanfa,array): new_num=[] for i in array: new_num.append(fanfa(i)) return new_numnew_num=num_pin(pf,num_1)print(new_num)new_num2=num_pin(add_one,num_1)print(new_num2)[1, 4, 100, 25, 9, 49][2, 3, 11, 6, 4, 8]
num=[13,46,5,46,5,7]def pf(x): return x*xdef jisuan(fuan,array): new_num=[] for i in array: new_num.append(fuan(i)) return new_numprint(jisuan(pf,num))f=lambda x:x*xprint(f)print(lambda x:x*x)print(jisuan(f,num))print(jisuan(lambda x:x*x,num))>>>>[169, 2116, 25, 2116, 25, 49]<function <lambda> at 0x101b7da60><function <lambda> at 0x101b7dae8>[169, 2116, 25, 2116, 25, 49][169, 2116, 25, 2116, 25, 49]
#終極版本def map_test(func,array): #func=lambda x:x+1 arrary=[1,2,10,5,3,7] ret=[] for i in array: res=func(i) #add_one(i) ret.append(res) return retprint(map_test(lambda x:x+1,num_l))res=map(lambda x:x+1,num_l)print(‘內建函數map,處理結果‘,res)# for i in res:# print(i)print(list(res))print(‘傳的是有名函數‘,list(map(reduce_one,num_l)))msg=‘linhaifeng‘print(list(map(lambda x:x.upper(),msg)))>>>[2, 3, 11, 6, 4, 8]內建函數map,處理結果 <map object at 0x101b862e8>[2, 3, 11, 6, 4, 8]傳的是有名函數 [0, 1, 9, 4, 2, 6][‘L‘, ‘I‘, ‘N‘, ‘H‘, ‘A‘, ‘I‘, ‘F‘, ‘E‘, ‘N‘, ‘G‘]
總結:
對可迭代對象的每一個元素進行邏輯運算:可以使用匿名函數:lambda或者自訂函數
①、print(list(map(lambda x:x**2,num)))②、num=[13,46,5,46,5,7]def pf(x): return x*xprint(list(map(pf,num)))
四、filter函數
dsdsdsdsdsds
dsd
python學習-day16:函數範圍、匿名函數、函數式編程、map、filter、reduce函數、內建函數r