# -*- coding:utf-8-*- #---函數式編程 #-------高階函數------ #變量可以指向函數 print abs(-10); #10 內置的求絕對值的函數 print abs; #<built-in function abs> 函數本身 #我們可以把函數賦給變量,即變量能夠指向函數 s = abs; print s; #<built-in function abs> 沒有問題 print s(-10); #10 可以使用 #----變量名也是函數 ''' abs = 10; print abs; #10 print abs(-10); #報錯 一般不會用函數名當變量名,此時要恢復abs,重啓python交互環境 我這裏注掉 ''' #--傳入函數 #上面看到變量可以指向函數,函數參數也能接收變量,那麼一個函數也可以就收另一個函數作爲參數,稱爲告誡函數 def add(x,y,f): return f(x)+f(y); print add(-5,7,abs); #12 5的絕對值+7的絕對值 #函數作爲返回值 #求和 def sum(*args): x = 0; for i in args: x = x+i; return x; print sum(1,3,5); #9 #----------------------------- def lazy_sum(*args): def sum(): x = 0; for i in args: x = x + i; return x; return sum; s = lazy_sum(1,2); print s; #<function sum at 0x0000000005015668> 返回函數 print s(); #調用s返回結果 #------------------------------------------------------------------------ #------匿名函數 #不顯示的定義函數,直接傳入匿名函數 lambda是匿名函數的關鍵字 box=(map(lambda x:x*x,[1,2,3])); print box; #[1, 4, 9] ''' lambda x:x*x 即 def f(x): return x * x 關鍵字lambda冒號前是函數參數,後是表達式 限制:只能寫一個表達式,不用寫return,返回值是表達式的結果 好處:函數沒有名字,不必擔心函數名衝突。匿名函數也是一個函數對象,也可以把匿名函數賦值給一個變量,再用 變量來調用該函數 ''' f = lambda x :x * x print f; #<function <lambda> at 0x00000000057A56D8> print f(4); #16 #--匿名函數當返回值 def cj(x,y): return lambda :x * x + y *y s = cj(1,2); print s; #<function <lambda> at 0x0000000004D157B8> print s(); #5 #----
函數式編程
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.