形式引數(形參)
在定義函式階段定義的引數稱之為形參,相當于變數名
位置形參(普通形參)
位置形參:在函式定義階段,按照從左到右的順序定義
特點:必須被傳值,且實參與形參按照順序一一對應,多一個少一個都不行!
def func():
pass
默認形參
默認形參:在函式定義階段,就已經被賦值的引數
def func(x, y=1):
pass
普通收集形參
普通收集形參:用于接收多出部分的位置實參,溢位的部分會被保存成元組型別,然后賦值給后面的形參接收
def func(x, y, *args):
print(x, y)
print(args)
func(1, 2, 3, 4, 5, 6, 7, 78, 8, 89)
*后的形參名一般定義為
args,為約定俗成
關鍵字收集形參
關鍵字收集形參:用于接收多出部分的關鍵字實參,溢位的部分會被**保存成字典型別,然后賦值給**后面的形參接收
def func(x, y, **kwargs):
print(x, y)
print(kwargs)
func(a=1, b=2, c=3, x=4, y=5, z=6)
**后的形參名一般定義為
kwargs,為約定俗成
命名關鍵字形參
命名關鍵字形參:在函式定義時,*后定義的引數,就是命名關鍵字引數
特點:命名關鍵字實參必須按照key=value的形式為其傳參
# y=2是帶有默認值的命名關鍵字形參,并非是默認形參,所以可以放置在z的前面
def func(x, *, y=2, z):
print(x)
# 其中y和z就是命名關鍵字形參
print(y, z)
func(1, z=3)
實際引數(實參)
在呼叫函式階段定義的引數稱之為實參,相當于變數值
位置實參(普通實參)
位置實參:在函式呼叫階段,按照從左到右的順序依次傳入的值
特點:實參與形參按照順序一一對應
def func(x, y):
print(x + y)
func(1, 2)
關鍵字實參
關鍵字實參:在函式呼叫階段,按照key=value的形式傳入的值
特點:指定給具體的某個形參傳值,可以不按照順序傳值
def func(x, y):
print(x + y)
func(y=1, x=2)
func(x=2, y=1)
*和**的使用
-
*和**在函式定義處使用
- *:把多余的普通實參打包成元組
- **:把多余的關鍵字實參打包成字典
-
*和**在函式呼叫處使用
- *:對元組或串列進行解包
- **:對字典進行解包
-
*和**同時在函式定義處和呼叫處使用
- 先解包變成位置形參
- 再將多余的位置形參打包
# 示例一
def func(x, y, z):
print(x, y, z)
func(*[1, 2, 3])
func(*(1, 2, 3))
func(**{"x": 1, "y": 2, "z": 3})
# 實體二
def func(x, y, z, *args):
print(x, y, z)
print(args)
func(5, 6, 7, *[1, 2, 3])
形參與實參的關系
- 在呼叫階段,實參會系結給形參
- 這種系結關系只能在函式體內使用
- 實參與形參的系結關系只在函式呼叫時生效,函式呼叫結束后解除系結關系
總結
- 位置實參與關鍵字實參混合使用時,位置實參必須放在關鍵字實參前面(語法規定)
- 位置形參與默認形參混合使用時,位置形參必須在默認形參的左邊
- 不能為同一形參重復傳值
- 默認形參對應的實參可傳可不傳
*args與**kwargs混合使用時,*args必須寫在**kwargs的前面,否則會報語法錯誤
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/227238.html
標籤:Python
