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)
)# 輸出結果
帶判斷的lambdarst =
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雙引號,怎麼辦呢?嘻嘻 可以使用轉義...