在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Python/ 匿名函數
基礎
itertools
HTTP 服務
hashlib
閉包
文件和目錄
單元測試
使用 @property
標準模塊
陌生的 metaclass
Base64
進程、線程和協程
讀寫二進制文件
匿名函數
輸入和輸出
Click
元組
字符編碼
partial 函數
參考資料
collections
協程
類和實例
Python 之旅
定制類和魔法方法
常用數據類型
繼承和多態(tài)
ThreadLocal
HTTP 協議簡介
Requests 庫的使用
讀寫文本文件
列表
os 模塊
迭代器 (Iterator)
正則表達式
集合
上下文管理器
異常處理
你不知道的 super
定義函數
datetime
資源推薦
字典
slots 魔法
hmac
第三方模塊
進程
類方法和靜態(tài)方法
函數參數
高階函數
函數
re 模塊
高級特性
線程
argparse
生成器
結束語
字符串
map/reduce/filter
函數式編程
Celery
裝飾器

匿名函數

在 Python 中,我們使用 def 語句來定義函數,比如:

def double(x):
    return 2 * x

除了用上面的方式定義函數,Python 還提供了一個關鍵字 lambda,讓我們可以創(chuàng)建一個匿名函數,也就是沒有名稱的函數。它的形式如下:

lambda 參數: 表達式

關鍵字 lambda 說明它是一個匿名函數,冒號 : 前面的變量是該匿名函數的參數,冒號后面是函數的返回值,注意這里不需使用 return 關鍵字。

我們將上面的 double 函數改寫成一個匿名函數,如下:

lambda x: 2 * x

那怎么調用匿名函數呢?可以直接這樣使用:

>>> (lambda x: 2 * x)(8)
16

由于匿名函數本質上是一個函數對象,也可以將其賦值給另一個變量,再由該變量來調用函數,如下:

>>> f = lambda x: 2 * x   # 將匿名函數賦給變量 f  
>>> f
<function <lambda> at 0x7f835a696578>
>>> f(8)
16

使用場景

lambda 函數一般適用于創(chuàng)建一些臨時性的,小巧的函數。比如上面的 double 函數,我們當然可以使用 def 來定義,但使用 lambda 來創(chuàng)建會顯得很簡潔,尤其是在高階函數的使用中。

看一個例子:

def func(g, arr):
    return [g(x) for x in arr]

現在給一個列表 [1, 2, 3, 4],利用上面的函數,對列表中的元素加 1,返回一個新的列表,你可能這樣用:

def add_one(x):
    return x + 1

arr = func(add_one, [1, 2, 3, 4])

這樣做沒什么錯,可是 add_one 這個函數太簡單了,使用 def 定義未免有點小題大作,我們改用 lambda

arr = func(lambda x: x + 1, [1, 2, 3, 4])

是不是很簡潔、易懂?

小結

  • 匿名函數本質上是一個函數,沒有函數名稱,因此使用匿名函數不用擔心函數名沖突;
  • 匿名函數一般適用于創(chuàng)建一些臨時性的,小巧的函數;
上一篇:文件和目錄下一篇:字典