偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Python 進(jìn)階:Lambda 匿名函數(shù)

開(kāi)發(fā)
Lambda 函數(shù)(又稱匿名函數(shù))是 Python 中一種簡(jiǎn)潔的定義單行函數(shù)的方式,適用于簡(jiǎn)單邏輯的場(chǎng)景。

Lambda 函數(shù)(又稱匿名函數(shù))是 Python 中一種簡(jiǎn)潔的定義單行函數(shù)的方式,適用于簡(jiǎn)單邏輯的場(chǎng)景。

匿名函數(shù)是指沒(méi)有使用 def 語(yǔ)句定義的函數(shù)。它的定義語(yǔ)法是:

lambda 參數(shù)列表: 表達(dá)式
  • 無(wú)參數(shù):lambda: 返回值
  • 單參數(shù):lambda x: x * 2
  • 多參數(shù):lambda x, y: x + y
  • 默認(rèn)參數(shù):lambda x, y=10: x + y
  • 可變參數(shù):lambda *args: sum(args)

特點(diǎn):

  • 匿名函數(shù)(無(wú)函數(shù)名)
  • 只能包含一個(gè)表達(dá)式(不能寫(xiě) return)
  • 自動(dòng)返回表達(dá)式結(jié)果

1. 使用場(chǎng)景

(1) 配合高階函數(shù)使用

當(dāng)需要一個(gè)一次性使用的簡(jiǎn)單函數(shù)來(lái)進(jìn)行計(jì)算時(shí),lambda 函數(shù)非常方便。

# map:對(duì)每個(gè)元素平方
numbers = [1, 2, 3]
squared = list(map(lambda x: x**2, numbers))  
# [1, 4, 9]

# filter:篩選偶數(shù)
evens = list(filter(lambda x: x % 2 == 0, numbers))  
# [2]

# sorted:按字符串長(zhǎng)度排序
words = ["apple", "kiwi", "banana"]
sorted_words = sorted(words, key=lambda s: len(s))  

# ['kiwi', 'apple', 'banana']

(2) 作為函數(shù)參數(shù)

# 自定義排序(按元組第二項(xiàng))
pairs = [(1, 9), (2, 5), (3, 7)]
pairs.sort(key=lambda pair: pair[1])  
# [(2, 5), (3, 7), (1, 9)]

# 在閉包中使用
def multiplier(n):
    return lambda x: x * n

double = multiplier(2)
print(double(5))  
# 10

2. 注意事項(xiàng)

(1) 避免過(guò)度復(fù)雜

Lambda 應(yīng)保持簡(jiǎn)單,復(fù)雜邏輯用 def 定義

# 不推薦(可讀性差)
result = (lambda x: x**2 if x > 0 else 0)(5)

# 推薦使用 def
def square_if_positive(x):
    return x**2 if x > 0 else 0

(2) 作用域問(wèn)題

在循環(huán)中創(chuàng)建 lambda 時(shí),注意變量捕獲:

# 錯(cuò)誤示例(所有函數(shù)都返回 9)
funcs = [lambda: i for i in range(10)]
print(funcs[0]())  # 輸出 9(i 的最終值)

# 正確做法:使用默認(rèn)參數(shù)凍結(jié)當(dāng)前值
funcs = [lambda i=i: i for i in range(10)]
print(funcs[0]())  # 輸出 0

(3) 不能包含語(yǔ)句

禁止使用 if(條件表達(dá)式 x if cond else y 除外)、for、while 等語(yǔ)句。

3. 總結(jié)

  • 適用場(chǎng)景:簡(jiǎn)單邏輯、一次性的小型函數(shù)(如排序鍵、映射轉(zhuǎn)換)。
  • 優(yōu)勢(shì):代碼簡(jiǎn)潔,無(wú)需命名。
  • 限制:不支持多行邏輯或復(fù)雜控制流。

最佳實(shí)踐:

  • 與 map()、filter()、sorted() 配合使用
  • 作為高階函數(shù)的參數(shù)
  • 避免替代復(fù)雜的命名函數(shù)
責(zé)任編輯:趙寧寧 來(lái)源: 程序員老朱
相關(guān)推薦

2020-09-21 06:10:47

Python lambda匿名函數(shù)

2024-02-27 09:43:37

Pythonlambda函數(shù)

2024-12-17 09:00:00

lambda函數(shù)Python

2020-10-16 06:40:25

C++匿名函數(shù)

2023-05-31 13:32:08

Javalambda函數(shù)

2023-12-13 10:12:40

Python函數(shù)lambda

2013-01-20 14:54:34

PythonLambda

2022-07-07 09:03:36

Python返回函數(shù)匿名函數(shù)

2023-12-14 15:31:43

函數(shù)式編程python編程

2023-11-01 16:55:27

Golang匿名函數(shù)

2022-09-13 09:31:59

Python內(nèi)置函數(shù)lambda

2021-08-07 07:21:26

AndroidKotlinLambda

2020-09-30 08:32:40

Python

2019-09-03 10:55:20

Python函數(shù)lambad

2022-10-31 08:02:07

Python函數(shù)式編程

2009-07-31 14:08:54

C# 匿名函數(shù)

2022-08-05 13:51:32

Python函數(shù)lambda

2009-12-16 14:24:48

Ruby函數(shù)lambd

2022-06-27 08:36:08

PythonLambda

2020-05-20 10:35:53

Python開(kāi)發(fā)函數(shù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)