一、函數(shù)調(diào)用過(guò)程
程序調(diào)用函數(shù)需要四步:
- 調(diào)用程序在調(diào)用處暫停執(zhí)行
- 在調(diào)用時(shí)將實(shí)參復(fù)制給函數(shù)的形參
- 執(zhí)行函數(shù)體語(yǔ)句
- 函數(shù)調(diào)用結(jié)束給出返回值,程序回到調(diào)用前的暫停處繼續(xù)執(zhí)行。
二、函數(shù)的參數(shù)傳遞
**形式參數(shù)(形參):**在函數(shù)創(chuàng)建和定義過(guò)程中使用的參數(shù)。
**實(shí)際參數(shù)(實(shí)參):**在函數(shù)被調(diào)用的過(guò)程中傳遞進(jìn)來(lái)的參數(shù)。
形參只是代表一個(gè)位置、一個(gè)變量名,沒(méi)有具體的值。
實(shí)參是一個(gè)具體的值,是賦值到變量名中的值。
實(shí)參默認(rèn)按位置順序依次傳遞給形參,若參數(shù)個(gè)數(shù)不對(duì),就會(huì)報(bào)錯(cuò)
關(guān)鍵字參數(shù):
普通的參數(shù)叫做位置參數(shù),調(diào)用時(shí)需要按照位置傳遞參數(shù)值。
關(guān)鍵字參數(shù)就是在調(diào)用函數(shù),傳入實(shí)參時(shí)指定形參的變量名。
可選參數(shù)(默認(rèn)值參數(shù)):
定義函數(shù)時(shí),如果有些參數(shù)存在默認(rèn)值,可以在定義函數(shù)時(shí)直接為這些參數(shù)指定默認(rèn)值。
當(dāng)函數(shù)被調(diào)用時(shí),如果沒(méi)有傳入對(duì)應(yīng)的參數(shù)值,則使用函數(shù)定義時(shí)的默認(rèn)值替代。
由于函數(shù)調(diào)用時(shí)需要按照順序輸入?yún)?shù), 可選參數(shù)必須定義在非可選參數(shù)的后面。
可變數(shù)量參數(shù)(*c,**d):
在定義函數(shù)時(shí),可以設(shè)計(jì)可變數(shù)量參數(shù),通過(guò)參數(shù)前增加 單星號(hào)( * )或雙星號(hào)( ** ) 實(shí)現(xiàn)。帶有星號(hào)的可變參數(shù)只能出現(xiàn)在參數(shù)列表的后面。調(diào)用時(shí),增加單星號(hào)的參數(shù)被當(dāng)做 元組 類型傳遞到函數(shù)中,增加雙星號(hào)的參數(shù)被當(dāng)做 字典 類型傳遞到函數(shù)中。
>>>def vfunc(a, *b):
print(type(b))
for n in b:
a +=n
return a
>>>vfunc(1,2,3,4,5)
15
參數(shù)的位置與名稱傳遞
Python提供了按照形參名稱輸入實(shí)參的方式,函數(shù)調(diào)用如下:
result = func(x2=4, y2=5, z2=6, x1=1, y1=2, z1=3)
由于調(diào)用函數(shù)時(shí)指定了參數(shù)名稱,所以參數(shù)之間的順序可以任意調(diào)整。
參數(shù)傳遞的基本順序:
- 位置參數(shù)
>>> def add(x,y):
>>> return x + y
>>> add(3,4)
7
- 關(guān)鍵字參數(shù)
>>> def add(x,y):
>>> return x + y
>>> add(y = 4,x = 3)
7
-
可變數(shù)量參數(shù)
1.arg:以 元組 形式返回
2.**arg:以 字典 形式返回
>>> def test_fun(a,b = 6,*c,**d):
>>> print("a = ",a,"b = ",b,"c = ",c,"d = ",d)
>>> test_fun(1)
a = 1 b = 6 c = () d = {}
>>> test_fun(1,2)
a = 1 b = 2 c = () d = {}
>>> test_fun(1,2,3)
a = 1 b = 2 c = (3,) d = {}
>>> test_fun(1,2,3,4)
a = 1 b = 2 c = (3,4) d = {}
>>> test_fun(a = 1)
a = 1 b = 6 c = () d = {}
>>> test_fun(a = 1,b = 2,c = 3) #c和d是占位符,不是名稱,c是不確定數(shù)量的單個(gè)變量,d是有鍵有值
a = 1 b = 2 c = () d = {'c': 3}
>>> test_fun(1,2,3,4,x = 1)
a = 1 b = 2 c = (3,4) d = {'x': 1}
>>> test_fun(1,2,3,4,5,6,x = 1,y = 2,z = 3)
a = 1 b = 2 c = (3, 4, 5, 6) d = {'x': 1, 'y': 2, 'z': 3}
>>> test_fun(1,2,3,4,b = 8) #b不能二次賦值
TypeError: test_fun() got multiple values for argument 'b'
三、函數(shù)與過(guò)程
函數(shù):
有返回值
過(guò)程:
無(wú)返回值
Python中只有函數(shù),沒(méi)有過(guò)程。
如果沒(méi)有return語(yǔ)句,默認(rèn)返回None。
變量的返回值:
- return語(yǔ)句用來(lái)退出函數(shù)并將程序返回到函數(shù)被調(diào)用的位置繼續(xù)執(zhí)行。return語(yǔ)句同時(shí)可以將0個(gè)、1個(gè)或多個(gè)函數(shù)運(yùn)算完的結(jié)果返回給函數(shù)被調(diào)用處的變量。
>>>def func(a, b):
return a*b
>>>s = func("knock~", 2)
>>>print(s)
knock~knock~
- 函數(shù)可以沒(méi)有return,此時(shí)函數(shù)并不返回值。函數(shù)也可以用return 返回 多個(gè)值 ,多個(gè)值以 元組 類型保存
>>>def func(a, b):
return b,a
>>>s = func("knock~", 2)
>>>print(s, type(s))
(2, 'knock~')
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
