python高階函數
阿新 • • 發佈:2017-07-23
function ack ror 什麽 ace clas cnblogs 交互 strong
什麽是高階函數?根據例子一步步來
變量可以指向函數
以python內置的求絕對值的函數abs為例,我們可以有下面幾種調用方法
>>> abs(-10) 10
但是如果只寫abs呢?
>>> abs <built-in function abs>
abs(-10)是函數的調用,abs是函數本身
我們知道結果可以賦值給變量,函數是否可以呢?
>>> x=abs(-10) >>> x 10
y=abs >>> y <built-in function abs>
結論:函數也可以賦值給變量,即變量可以指向函數
用這個變量調用函數試一試
>>> y(-10) 10
成功了!!!abs(-10)和y(-10)一毛一樣
函數名也是變量
abs()函數可以看作abs這個變量指向了一個可以求絕對值的函數
>>> abs = 10 >>> abs(-10) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: ‘int‘ object is not callable
abs這個變量指向了10,再調用abs(-10)就會報錯,說明abs確實是個變量,如果想要使用abs正常的功能,只能重啟python交互環境。
什麽才是高階函數呢
既然變量可以指向函數,函數又能接收變量,那麽是不是就可以把函數當作變量傳入另一個函數呢
>>> def add(x, y, f): return f(x) + f(y) >>> add(-2, 3, abs) 5
把函數作為參數傳入,這樣的函數稱為高階函數
python高階函數