額,是看 中看到的.
首先我們定義個函式類如下.
class嗯,很簡單,就是把乙個函式拖進來而已.呼叫也簡單.如下function(object):
def__init__
(self,f):
self.f =f
def__call__
(self,x):
return self.f(x)
但是如果把上面的函式稍稍擴充套件下就很好玩了.完整如下:
class中間也沒什麼特別nx的**.都是很簡單的.但是組合起來就好玩了.在積分上的應用.function(object):
def__init__
(self,f):
self.f =f
def__call__
(self,x):
return
self.f(x)
def__add__
(self,g):
defsum(x):
return self(x) +g(x)
return
function(sum)
def__mul__
(self,g):
defprod(x):
return self.f(x) *g(x)
return
function(prod)
def__radd__
(self,g):
return self +g
def__rmul__
(self,g):
return self * g
如果是積分和.如 $\int _0^\sin(x) + \cos(x) dx = \int _0^\sin(x) dx + \int _0^\cos(x) dx$也許不會有什麼問題.但是乘法就不同了.$\int _0^\sin(x) \times \cos(x) dx = \int _0^\sin(x) dx \times \int _0^\cos(x) dx (?)$.
使用function就可以很自然地寫出這類積分,測試**如下.(其中需要numpy和scipy的支援).
好了睡覺先..
函式組合應用
函式通道就是自左向右。function compose f,g function touppercase str function add str function split str function reverse str function compose return result var f...
Python引數組合
引數定義的順序必須是 必選引數 預設引數 可選引數 命名關鍵字引數 關鍵字引數 1 a,b為必選引數 c為預設引數 args為可變引數 kw為關鍵字引數 2def f1 a,b,c 0,args,kw 3print a b b,c args args,kw kw 45 引數定義的順序必須是 必選引數...
學習三 函式組合
純函式和柯里化很容易寫出洋蔥 函式組合就可以把細粒度的函式重新組合成乙個新的函式。函式組合案例 function compose fn1,fn2 function reverse array function first array const last compose first,reverse ...