天天看點

《Python資料科學指南》——1.14 傳回一個函數

本節書摘來自異步社群《python資料科學指南》一書中的第1章,第1.14節,作者[印度] gopi subramanian ,方延風 劉丹 譯,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

在這節裡,我們讨論在一個函數裡傳回另一個函數。

我們舉一個高中的例子來說明咱們使用傳回一個函數的函數。我們要解決的問題是:給定半徑,求出不同高度的圓柱體的容積。

<code>volume = area * height = pi * r^2 * h</code>

上面的公式可以準确地求出圓柱體的體積。

我們寫一個簡單的函數來示範在函數中傳回函數的概念,此外還有一小段代碼介紹如何使用。

在第1步中,我們定義了函數cylinder_vol(),它隻有一個參數r,即半徑。在這個函數中,我們定義了另一個函數get_vol(),這個函數擷取r和pi的值,并将高度作為參數。對于給定的半徑r,也即cylinder_vol()的參數,不同高度值被作為參數傳遞給了get_vol()。

在第2步中,我們定義了半徑,在本例中具體值為10,調用并傳遞給了cylinder_vol()函數,這個函數傳回了get_vol()函數,我們把它存在名為find_volume的變量中。

在第3步中,我們使用不同的高度值來調用find_volume,如10和20,請注意我們沒有給出半徑值。

輸出結果如下。

functools是高階函數中的一個子產品,請參考以下連結: