Python基礎語法(八)

2021-10-04 00:03:05 字數 3170 閱讀 1063

2. lambda表示式

3. 高階函式

特點 函式內部自己呼叫自己

必須有出口

def

fn_sum

(inum)

:if inum ==1:

return inum

return inum + fn_sum(inum -1)

print

(fn_sum(3)

)# 輸出結果

6

如果乙個函式有乙個返回值,並且只有一句**,可以使用lambda簡化。
# lambda表示式的引數可有可無,函式的引數正在lambda表示式中完全適用。

# lambda表示式能接收任何數量的引數,但只能返回乙個表示式的值。

lambda 引數列表 : 表示式

示例

# 無引數

rst =

lambda

:100

print

(rst)

# 返回lambda記憶體位址

print

(rst())

# 輸出結果

lambda

> at 0x7f68b8490ee0

>

100# 有引數

rst =

lambda ia, ib: ia + ib

print

(rst(1,

2))# 輸出結果

3

無引數
rst =

lambda

:100

print

(rst())

# 輸出結果

100

乙個引數
rst =

lambda ia: ia

print

(rst(10)

)# 輸出結果

10

預設引數
rst =

lambda ia, ib, ic =

30: ia + ib + ic

print

(rst(10,

20))print

(rst(10,

20,40)

)# 輸出結果

6070

可變引數
rst =

lambda

*args: args

print

(rst(10,

20,40)

)# 輸出結果(10

,20,40

)

可變引數
rst =

lambda

**kwargs: kwargs

print

(rst(name=

"ccblogs"

, age=18)

)# 輸出結果

帶判斷的lambda
rst =

lambda a, b: a if a > b else b

print

(rst(30,

29))# 輸出結果

30

列表資料按字典key的值排序
lstnb =[,

,]lstnb.sort(key=

lambda nb: nb[

"age"])

print

(lstnb)

# 輸出結果[,

,]

把函式作為引數傳入,這樣的函式稱為高階函式。

示例

# abs():求數字的絕對值

# round():對數字進行四捨五入

deffn_add

(ia, ib, fn)

:return fn(ia)

+ fn(ib)

print

(fn_add(1,

-2,abs))

# 輸出結果

3

map():map(func, lst),將傳入的函式變數func作用到lst變數的每個元素中,並將結果組成新的列表(python2)/迭代器(python3)返回。
lstnum =[1

,2,3

,4,5

]def

fn_func

(ia)

:return ia **

2print

(map

(fn_func, lstnum)

)print

(list

(map

(fn_func, lstnum)))

# 輸出結果

<

mapobject at 0x7ff9242ecfd0

>[1

,4,9

,16,25

]

reduce():reduce(func, lst), 其中func必須有兩個引數。每次func計算的結果繼續和序列的下乙個元素做累積計算。
import functools

lstnum =[1

,2,3

,4,5

]def

fn_add

(ia, ib)

:return ia + ib

print

(functools.

reduce

(fn_add, lstnum)

)# 輸出結果

15

filter():filter(func, lst)函式用於過濾序列,過濾掉不符合條件的元素,返回乙個filter物件。如果要轉換為列表,可以使用list()來轉換。
lstnum =[1

,2,3

,4,5

]def

fn_func

(ia)

:return ia %2==

0print

(filter

(fn_func, lstnum)

)print

(list

(filter

(fn_func, lstnum)))

# 輸出結果

<

filter

object at 0x7f0a5cd4ffd0

>[2

,4]

Python基礎語法 八)

class student object pass 屬性和方法 類中定義的屬性和方法都是公共的,任何該類例項都可以訪問 屬性和方法的查詢流程 當我們呼叫乙個物件的屬性時,解析器會現在當前的物件中尋找是否還有該屬性,如果有,則直接返回當前的物件的屬性值。如果沒有,則去當前物件的類物件中去尋找,如果有則...

Python基礎 Python語法基礎

關鍵字是python語言的關鍵組成部分,不可隨便作為其他物件的識別符號 andas assert break class continue defdel elif else except exec finally forfrom global ifimport inis lambda notor p...

python初級語法 python語法基礎

寫在最前頭 python 程式對大小寫是敏感的!1 資料型別 1 整數 可以處理任意大小的正負整數 2 浮點數 浮點數運算可能會引入四捨五入的誤差 3 字串 可以是單引號or雙引號括起來的任意文字,但是不包括單引號or雙引號本身。ps 如果字串本身裡含有單引號or雙引號,怎麼辦呢?嘻嘻 可以使用轉義...