1. 程式人生 > >python高階函數

python高階函數

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高階函數