話不多說,直接看例子,上代碼:
1 def line_conf(): 2 def line(x): 3 return 2 * x + 1 4 return line #return a function object 5 6 my_line = line_conf() 7 print(my_line(5))
在上面這段代碼中,我定義了一個函數line_conf(),這個函數的作用是返回line(注意代碼第4行),而line是定義在line_conf()中的函數,即這個函數的作用就是返回一個函數,也就是把函數作為普通的對象進行返回。在理解上述代碼之前,我們先看另外一個例子:python中有個函數,名叫 abs,其功能是返回傳入參數的絕對值,即abs(10)返回10,abs(-10)返回10。此時如果令 a=abs, 接下來就可以不通過使用abs的名字來調用該函數,而可以直接用a(10)和a(-10)來返回10。怎么理解呢?abs其實也是一個變量名而已,可以把它理解為一個引用,一個指向返回絕對值函數的引用,這個時候如果令任何一個變量=abs,如a=abs,則此時a也作為引用指向了這個函數,即可使用a(10)的方式調用該函數。
再看上面這個例子,代碼第6行,通過調用line_conf()函數,返回一個line函數對象,my_line = line_conf() 即讓my_line=line,所以代碼第7行可以通過使用my_line(5)的方式去調用line函數。