python-匿名函數(shù)的定義

Lambda 表達(dá)式

匿名函數(shù)的定義

在 Python 里有兩類函數(shù):

  • 第一類:用 def 關(guān)鍵詞定義的正規(guī)函數(shù)
  • 第二類:用 lambda 關(guān)鍵詞定義的匿名函數(shù)

Python 使用 lambda 關(guān)鍵詞來創(chuàng)建匿名函數(shù),而非def關(guān)鍵詞,它沒有函數(shù)名,其語法結(jié)構(gòu)如下:

lambda argument_list: expression

  • lambda - 定義匿名函數(shù)的關(guān)鍵詞。
  • argument_list - 函數(shù)參數(shù),它們可以是位置參數(shù)、默認(rèn)參數(shù)、關(guān)鍵字參數(shù),和正規(guī)函數(shù)里的參數(shù)類型一樣。
  • :- 冒號(hào),在函數(shù)參數(shù)和表達(dá)式中間要加個(gè)冒號(hào)。
  • expression - 只是一個(gè)表達(dá)式,輸入函數(shù)參數(shù),輸出一些值。

注意:

  • expression 中沒有 return 語句,因?yàn)?lambda 不需要它來返回,表達(dá)式本身結(jié)果就是返回值。
  • 匿名函數(shù)擁有自己的命名空間,且不能訪問自己參數(shù)列表之外或全局命名空間里的參數(shù)。

【例子】

def sqr(x):
    return x ** 2


print(sqr)
# <function sqr at 0x000000BABD3A4400>

y = [sqr(x) for x in range(10)]
print(y)
# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

lbd_sqr = lambda x: x ** 2
print(lbd_sqr)
# <function <lambda> at 0x000000BABB6AC1E0>

y = [lbd_sqr(x) for x in range(10)]
print(y)
# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]


sumary = lambda arg1, arg2: arg1 + arg2
print(sumary(10, 20))  # 30

func = lambda *args: sum(args)
print(func(1, 2, 3, 4, 5))  # 15

這段代碼展示了使用lambda表達(dá)式(匿名函數(shù))的幾個(gè)示例。以下逐行解析代碼:

def sqr(x):
    return x ** 2


print(sqr)
# <function sqr at 0x000000BABD3A4400>

定義了一個(gè)名為sqr的函數(shù),用于計(jì)算一個(gè)數(shù)的平方。打印sqr函數(shù)會(huì)輸出函數(shù)的描述信息。

y = [sqr(x) for x in range(10)]
print(y)
# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

使用sqr函數(shù)和列表推導(dǎo)式生成一個(gè)包含0到9的數(shù)的平方的列表。

lbd_sqr = lambda x: x ** 2
print(lbd_sqr)
# <function <lambda> at 0x000000BABB6AC1E0>

使用lambda表達(dá)式創(chuàng)建了一個(gè)匿名函數(shù),并將其賦值給變量lbd_sqr。打印lbd_sqr會(huì)輸出函數(shù)的描述信息。

y = [lbd_sqr(x) for x in range(10)]
print(y)
# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

使用lbd_sqr的匿名函數(shù)和列表推導(dǎo)式生成一個(gè)包含0到9的數(shù)的平方的列表。

sumary = lambda arg1, arg2: arg1 + arg2
print(sumary(10, 20))  # 30

創(chuàng)建了一個(gè)接收兩個(gè)參數(shù)并返回它們之和的匿名函數(shù)sumary。調(diào)用sumary(10, 20)將返回結(jié)果30。

func = lambda *args: sum(args)
print(func(1, 2, 3, 4, 5))  # 15

創(chuàng)建了一個(gè)接收可變數(shù)量參數(shù)并返回它們的和的匿名函數(shù)func。調(diào)用func(1, 2, 3, 4, 5)將返回結(jié)果15。

lambda表達(dá)式是一種簡(jiǎn)潔的函數(shù)定義方式,在某些情況下可以替代常規(guī)的函數(shù)定義。它通常用于創(chuàng)建簡(jiǎn)單的、一次性的函數(shù)。在這些示例中,lambda表達(dá)式被用于定義平方函數(shù)和求和函數(shù),并且通過列表推導(dǎo)式可以方便地應(yīng)用到一系列輸入上。

如有錯(cuò)誤歡迎指正,謝謝!
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容