Python函數(shù)怎么定義和調(diào)用
發(fā)布時間:2022-12-09Python函數(shù)的定義
函數(shù)是代碼封裝的一種手段,函數(shù)中包含一段可以重復(fù)執(zhí)行的代碼,在需要用到這些代碼時,只需要調(diào)用函數(shù),就會運(yùn)行函數(shù)中的代碼。
python 函數(shù)這么定義:
def 函數(shù)名稱(參數(shù)1, 參數(shù)2):
函數(shù)體(要運(yùn)行的代碼)
比如一個很簡單的函數(shù)定義:
def add(a, b): return a + b
現(xiàn)在我們舉個例子說明函數(shù)的作用。
print('打開高級車門')print('開發(fā)動機(jī)')print('安全帶')print('踩油門')print('掌握方向')
如果要開很多次車,那么每次都需要敲相同的 5 行代碼,這樣會造成幾個問題:
很容易編寫不同的代碼,或者代碼出現(xiàn)錯誤
代碼冗余,可讀性不強(qiáng)
不容易維護(hù),當(dāng)需要修改某個步驟時,要修改多處。
Python函數(shù)的調(diào)用
現(xiàn)在我們可以把上述代碼封裝在函數(shù)中,當(dāng)需要運(yùn)行這些代碼時,調(diào)用函數(shù)就可以了,這樣減少了很多復(fù)制粘貼或者手工編寫多行代碼的步驟,函數(shù)的名稱也表明了代碼的作用,當(dāng)需要修改部分邏輯,只需要修改函數(shù)體就可以了。
def run_car():
print('打開高級車門')
print('發(fā)動發(fā)動機(jī)')
print('系上安全帶')
print('踩油門')
print('掌握方向')
run_car()
# 其他代碼
run_car()
Python函數(shù)的返回值
return 表示當(dāng)函數(shù)執(zhí)行完之后,想讓函數(shù)外面的程序得到函數(shù)執(zhí)行的結(jié)果, return 的值可以任意的數(shù)據(jù)類型。
def add(a, b): return a + bresult = add(3,4)print(result)
函數(shù)體當(dāng)中的代碼, 遇到 return 會終止運(yùn)行。
函數(shù)的返回結(jié)果可以是任意類型,包括 None
當(dāng)函數(shù)體當(dāng)中沒有 return ,默認(rèn)返回 None
Python函數(shù)可以返回多個值, 只需要在多個值之間加上逗號,得到的是元組類型。
def add(a, b):
return a, b
參數(shù)的四種類型
return 表示函數(shù)返回給外部的值,而參數(shù)表示函數(shù)從外部接收的值。在函數(shù)定義時候的參數(shù)叫做形式參數(shù),它其實(shí)就是一個變量名稱,在函數(shù)調(diào)用時候的參數(shù)叫做實(shí)際參數(shù),相當(dāng)于給變量賦值。
def get_coffee(suger):
if suger > 100:
return '甜咖啡'
elif suger < 1:
return '美式'
else:
return '莫名其妙的咖啡'
result = get_coffee(100)
print(result)
注意,形式參數(shù)的個數(shù)和實(shí)際參數(shù)的個數(shù)要一樣,而且順序要一致,這種方式叫做位置參數(shù)。(和領(lǐng)導(dǎo)吃飯做位置)如果形式參數(shù)和實(shí)際參數(shù)的個數(shù)不一致,會導(dǎo)致程序無法分別賦值:
def add(a, b):
c = a + b - 1
return c
add(5, 7, 8) # NO
關(guān)鍵字參數(shù):在調(diào)用函數(shù)的時候,做一個關(guān)鍵字標(biāo)記,以防傳參錯誤,造成損失。主要是當(dāng)參數(shù)很多的情況,你記不清順序,關(guān)鍵字去標(biāo)識數(shù)據(jù)的意思。
默認(rèn)參數(shù):在函數(shù)定義的時候,給某個變量直接賦值,成為默認(rèn)值。 就是使用默認(rèn)值直接賦值,在調(diào)用函數(shù)的時候,可以少傳參數(shù)。關(guān)鍵字參數(shù),默認(rèn)參數(shù)也好,都必須放到位置參數(shù)的后面。
def add(a, b=0):
c = a + b - 1
return c
add(a=4, b=6)
add(3)
自動化測試場景:添加多個數(shù)據(jù),運(yùn)行多個用例
def write_case(number):
for _ in range(number):
username = input("請輸入用戶名:")
passwd = input("請輸入密碼:")
age = input("請輸入年齡:")
user = dict()
user.update(username=username,
passwd=passwd,
age=age)
yield user
def run(case):
print(f"運(yùn)行用例-用戶名{case['username']}")
cases = write_case(2)
for case in cases:
run(case)