Python的匿名函式及其應用

2021-10-11 15:28:26 字數 2849 閱讀 9439

簡化函式的書寫形式,適用於短小的函式

lambda

格式:lambda 引數1,引數2, …: 返回值

def

f(x)

:return x +

1# lambda表示式 便於**的閱讀,精簡**, 功能與f(x) 函式等價

# 格式:lambda 引數1,引數2, ...: 返回值

x =lambda x: x +

1print

(f(1))

print

(x(1

))

sorted

作用:排序

sorted 預設公升序,reverse預設是false

def

sort_test()

: students =[,

,,]# sorted 預設公升序,reverse預設是false

print

(sorted

(students, key=

lambda student: student[

'age'

], reverse=

true))

if __name__ ==

'__main__'

: sort_test(

)

map

會根據提供的函式對指定的序列做對映

map函式的第乙個引數是乙個函式名。如果函式的實現比較簡單的時候,可以用沒有名字的函式 ——lambda

from functools import

reduce

from typing import iterator

defmap_test

(keys:

list

, values:

list)-

> iterator:

return

map(

lambda key, value:

, keys, values)

# map 對映,引數必須一一對應,不然會報錯

deff

(key, value)

:return

deff2

(x, y, z)

:return x + y + z

l1 =[1

,2,3

]l2 =[4

,5,6

]l3 =[7

,8,9

]print

(list

(map

(f2, l1, l2, l3)))

print

(list

(map

(lambda x, y, z: x + y + z, l1, l2, l3)))

defreduce_test()

:# 累加功能 需要了解的屬性和方法,100 從1加到100

print

(reduce

(lambda a, b: a + b,

range(1

,101))

)# 等價寫法

deff3

(a, b)

:return a + b

defzip_test()

: l1 =

['a'

,'b'

,'c'

] l2 =[4

,5,6

]print

(list

(zip

(l1, l2)))

if __name__ ==

'__main__'

: reduce_test(

)print

(reduce

(f3,

range(1

,101))

) zip_test(

)

reduce

作用:累加功能

格式:reduce(function, sequence)

格式:reduce

(function, sequence)

# 累加功能 1,100 從1加到100

defreduce_test()

:print

(reduce

(lambda a, b: a + b,

range(1

,101))

)

把乙個函式當做引數傳進去的函式,就是高階函式

reduce,map,sorted

套娃

import sys

defrecursion_test()

:print

(sys.getrecursionlimit())

# 檢視遞迴的深度

# sys.setrecursionlimit(9)

defstory()

:print

('從前有個廟...'

)return story(

)# 累加功能 需要了解的屬性和方法,100 從1加到100

defdemo

(a):

if a ==10:

return

10return demo(a +1)

+ a'''

課外知識點:棧,堆

棧,先進後出

'''if __name__ ==

'__main__'

:# recursion_test()

print

(demo(1)

)

應用場景:

​ 全域性變數越少越好,區域性變數用完時會被銷毀

​ 裝飾器的設計模式建立在閉包之上

python 匿名函式及其應用

定義lambda函式 sum lambda arg1,arg2 arg1 arg2 呼叫函式 totle sum 3,5 print totle d totle 執行如下 totle 8lambda函式能接收任何數量的引數但只能返回乙個表示式的值 匿名函式不能直接呼叫print,因為lambda需要...

Python 匿名函式及其應用

func 函式的記憶體位址 deffunc x,y return x y print func print lambda x,y x y res lambda x,y x y 1 2 print res func lambda x,y x y res func 1,2 print res 匿名用於臨...

Python的匿名函式

python定義函式格式 def func name pass 定義名字 函式體部分情況下不需要重複呼叫 匿名函式 一次返回值即可 比如 max min sorted usr bin env python coding utf 8 author xp blog url 內建函式 map reduce...