一、函式的定義
#語法
def 函式名(引數1,引數2,引數3,...): # ---》 def ____ (): 是語法,必須要有, 函式名 是一個變數名,指向 函式代碼的記憶體地址,必須要有,引數可以省略
'''注釋''' # ---》 默認None,可以沒有
函式體 # ---》 默認None,可以pass
return 回傳的值 # ---》 默認None,可以沒有
#函式名要能反映其意義
一、函式的引數
1.形參(形式引數):相當于變數名;是定義函式階段定義的引數,
a.位置形參
在函式定義階段,按照從左到右的順序依次定義的“變數名“,必須被傳值,多一個不行,少一個也不行,
b. 默認形參
在函式定義階段,已經被賦值的形參,在函式呼叫階段可以不賦值,def func(x=3):
與位置形參混用是,默認形參要在位置形參的右邊, error: non_default argument follows default argument
雖然默認值可以被指定為任意資料型別,但是不推薦使用可變型別,
2.實參(實際引數):相當于變數值;是在呼叫函式階段傳入的值,
a.位置實參
在函式呼叫階段,按照從左到右的順序依次傳入的值,與按照順序與形參一一對應,
b.關鍵字實參
- 在函式呼叫階段,按照key = value 的形式傳入的值,知名道姓的給某個形參傳值,完全不用考慮形參的順序,
- 與位置實參混用的時候,位置實參必須放在關鍵字實參前,error :positional argument follows keyword argument.
- 不能給同一個形參重復傳值
c.可變長度引數
- 可變長度引數指的是在呼叫函式時,傳入的實參的個數是不固定的,
- 而實參是用來給形參賦值的,所以對應著,針對溢位的實參必須有對應的形參來接收
- 有一種形參格式*args 用來接收溢位的位置實參,
-- f(x,*args)---f(1,2,3,3) .多出來的(2,3,3)會被* 處理成元祖,傳給變數args, args = (2,3,3)
-- * 可以用在實參中,f(x,y,z) --- f(*[1,2,3]) = f(1,2,3).. * 會把串列中的元素變成 一個個位置實參,按順序傳給位置形參
--有一種形參格式**kwargs 用來接收溢位的關鍵字實參
-- f(x,**kwargs)--f(x=1,y=2,z=3) .多出來的(y=2,z=3)會被* 處理成字典{“y":2,”z":3},傳給變數kwargs, kwargs = {“y":2,”z":3}
-- ** 可以用在實參中,f(x,y,z) --- f(* {'x':1,'y':2,”z":3}) = f(x=1,y=2,z=3).. 8* 會把字典中的元素變成 一個個關鍵字實參,傳給對應的形參
4.函式呼叫時,將值的記憶體地址系結到變數名上,函式呼叫結束,解除系結,
a.這種系結關系只能在函式體內使用
b.這種系結關系在呼叫函式時生效,結束呼叫后解除
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/79369.html
標籤:Python
下一篇:函式的作用域和名稱空間
