1. 程式人生 > 其它 >Python基礎—函式(2)

Python基礎—函式(2)

技術標籤: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