91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python函數式編程的返回函數與匿名函數怎么定義

發布時間:2023-05-06 14:57:52 來源:億速云 閱讀:89 作者:iii 欄目:開發技術

本篇內容介紹了“Python函數式編程的返回函數與匿名函數怎么定義”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

返回函數

所謂返回函數,顧名思義,就是把函數作為返回值。高階函數除了可以將函數作為參數之外,還可以將函數作為結果進行返回。下面來實現一個可變參數的連乘,求積函數可定義為:

def calc_fac(*args):
  fx = 0
  for n in args:
        fx = fx * n  
return fx

很多時候當求積函數定義好后我們并不需要立即求積,而是會根據后面的計算再行調用。這時,我們就可以先不返回函數的結果,而是將函數本身返回,如下可見:

def lazy_fac(*args):
   def fac():
     fx = 0
   for n in args:
         fx = fx * n  
     return fx  
return fac

重新定義求積函數后,當我們調用lazy_fac()時,返回的就不是求積的結果啦,而是求積函數:

>>> a=lazy_fac(1,2,3,4)
>>> a
<function lazy_fac.<locals>.fac at 0x002a5dr42>

而當調用函數 a 時,求積過程才被執行:

>>> a()
24

此例中,我們在函數lazy_fac中又定義了函數fac,fac可稱做內部函數,而lazy_fac為外部函數。內部函數fac可以引用外部函數的的參數和局部變量。參數和變量都保存在我們最后返回的內部函數fac中。這種程序結構在Python上我們稱之為閉包。

在閉包結構中,函數作為結果返回時,函數過程并沒有被立刻執行,而是等我們調用 a( )后才執行。

總之,在函數式編程里,函數除了可以返回一個計算結果之外,也可以返回一個未執行的函數。當返回函數時,始終牢記該函數并未被執行,返回函數中盡量不要引入循環變量等可能引起變化的變量。

匿名函數

當我們在傳入函數時或者代碼結構過于復雜時,我們可以通過匿名函數來代替顯式的函數定義。此時,匿名函數會大大簡化代碼結構,可以使之更為精煉。

以之前介紹的 map 函數為例來計算 x3 看看匿名函數的功能:

>>> list(map(lambda x: x * x * x, [1, 2, 3]))
[1, 8, 27]

對比可以看出,匿名函數lambda x : x*x*x 就相當于:

def f(x):
 return x * x * x

lambda作為匿名函數的關鍵字,冒號前面的 x 表示匿名函數的參數。匿名函數只能有一個表達式,無需像定義函數那樣寫 return。因為匿名函數沒有函數名,在使用過程中就不需要擔心函數名的沖突。匿名函數作為一個函數對象,也符合向變量進行賦值的規則:

>>> fx = lambda x: x * x * x
>>> fx
<function <lambda> at 0x101c6ef28>
>>> f(4)
64

同樣,匿名函數作為一個函數也可以被被當成返回函數:

def f(x):
 return lambda: x * x * x

“Python函數式編程的返回函數與匿名函數怎么定義”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

历史| 通榆县| 永城市| 梁山县| 墨竹工卡县| 江永县| 开鲁县| 灯塔市| 苏尼特左旗| 大新县| 崇州市| 三亚市| 咸阳市| 湄潭县| 梁平县| 南澳县| 望都县| 江源县| 文化| 叙永县| 高青县| 阳高县| 东城区| 邛崃市| 临江市| 东安县| 珲春市| 南涧| 清流县| 陇南市| 新巴尔虎右旗| 秀山| 突泉县| 平阳县| 信宜市| 东莞市| 岳阳市| 清远市| 罗山县| 吉安市| 夏邑县|