Python基礎—函式(2)
阿新 • • 發佈:2021-01-20
技術標籤:python
遞迴
說明:函式內部自己呼叫自己,必須要留有出口。
1+2+3+…+100看成100+99+98+…+1
def plus(a): #設定形參
if a == 1:
return 1 #如果是1,則直接返回。設定的出口
b = a + plus(a-1) #如果不是1,重複執行累加.形參-1相當於又傳了個實參
return b #返回累加的結果
i = plus(3) #3為設定的實參
print(i)
6
lambda表示式
適用場景:當函式有一個返回值,且有一句程式碼。
語法:lambda形參:表示式
函式與lambda表示式對比
無引數
def func():
return 520
print(func())
#改為lambda
print((lambda:520)())
520
520
有引數
def func(a,b):
return a+b
i = func(520,1314)
print(i)
#改成lambda
print((lambda a,b:a+b)(520,1314))
1834
1834
預設引數
def func(a,b,c=5):
return a+b+c
i = func(5,2)
print(i)
#改成lambda
print((lambda a,b,c=5:a+b+c)(5,2))
12
12
可變位置引數
def func(*args):
return args
print(func(5,6,7))
#改成lambda
print((lambda *args:args )(5,6,7))
(5, 6, 7)
(5, 6, 7)
可變關鍵字引數
def func(**kwargs):
return kwargs
print(func(name='Tiffany',age='20'))
#改成lambda
print((lambda **kwargs:kwargs )(name='Tiffany',age='20' ))
{'name': 'Tiffany', 'age': '20'}
{'name': 'Tiffany', 'age': '20'}
條件語句
def func(a,b):
return a if a>b else b
print(func(1,2))
#改成lambda
print((lambda a,b:a if a>b else b)(1,2))
2
2
高階函式
說明:基於已有的函式定義新函式,以函式作為引數,返回的也是函式
filter(過濾)
語法: filter(函式名,需要過濾的物件)
a = [1,2,3,4,5,6,7,8,9]
def func(i):
return i%2 == 0
b = filter(func,a)
print(list(b))
#改成lambda
a = [1,2,3,4,5,6,7,8,9]
print(list(filter(lambda c:c%2==0,a)))
[2, 4, 6, 8]
[2, 4, 6, 8]
map(加工)
語法: map(函式名,需要加工的物件)
a = [1,2,3,4,5,6,7,8,9]
def func(i):
return i**2
b = map(func,a)
print(list(b))
a = [1,2,3,4,5,6,7,8,9]
print(list(map(lambda i:i**2,a) ))
[1, 4, 9, 16, 25, 36, 49, 64, 81]
[1, 4, 9, 16, 25, 36, 49, 64, 81]
reduce(累加)
語法:reduce(函式名,可累加物件)
說明:函式中必須有兩個引數,每次函式計算結果和下個元素做累積計算。
import functools #匯入模組
a = [1,2,3,4,5,6,7,8,9]
def func(i,j):
return i+j
b = functools.reduce(func,a)
print(b)
#改成lambda
a = [1,2,3,4,5,6,7,8,9]
print(functools.reduce(lambda i,j:i+j,a))
45
45