函式的引數傳遞

2021-09-04 10:57:05 字數 1506 閱讀 4287

傳遞方式:

位置傳參

序列傳參

關鍵字傳參

字典關鍵字傳參

實際引數的對應關係和形式引數的對應關係是按位置依次對應

示例:def mymin(a, b, c):

pass

mymin(1, 2, 3) #1, 2, 3位置對應關係傳給a, b, c

說明:實際引數和形式引數通過位置進行傳遞和匹配

實際引數和形式引數的個必須相同

序列傳參是指在函式呼叫過程中,用*將序列拆解後按位置進行傳遞的傳參方式

說明:序列傳參時,序列拆解的位置將與形參一一對應

序列的位置資訊對應相應的引數位置

示例:def myfun(a, b, c):

print(a)

print(b)

print(c)

s1 = [1, 2, 3]

s2 = (4, 5, 6)

s3 = 'abc'

#等同於myfun(s1[0], s1[1], s1[2])

myfun(*s1)

myfun(*s2)

myfun(*s3)

是指傳參時,按著形參名稱給形參賦值

實參和形參按名稱進行匹配

示例:def myfun(a, b, c):

pass

myfun(b = 1, a = 2, c = 3) #2-->a 1-->b 3-->c

myfun(c = 10, b = 5, a = 1) #1-->a 5-->b 10-->c

說明:實參和形參按著形參名進行匹配,可以不按位置進行匹配

是指實參為字典,將字典用 ** 拆解後進行關鍵字傳參的方式

說明:字典的鍵名和形參名一致

字典的鍵名必須為字串(且為識別符號的命名方式)

字典的鍵名要在形參中存在

示例:def myfun(a, b, c):

print(a, b, c)

d1 =

myfun(**d1)

函式的傳參方式,在能確定形參能唯一匹配到相應實參的情況下可以任意組合

函式的位置傳參要先於關鍵字傳參

說明:位置傳參和序列傳參可以混合使用且可以順序顛倒

如:myfun(100, *[200, 300])

myfun(*[100, 200], 300)

myfun(*[100], 200, *[300])

函式的關鍵字傳參和字典關鍵字傳參可以混合使用且順序可以顛倒

如:myfun(c=300, **)

myfun(**, a=100)

位置傳參和關鍵字傳參可以混合使用,但位置傳參要先於關鍵字傳參:

如:myfun(100, c=300, b=200)

myfun(10, b=20, **)

函式的引數傳遞

一 函式引數傳遞機制的基本理論 函式引數傳遞機制問題在本質上是呼叫函式 過程 和被呼叫函式 過程 在呼叫發生時進行通訊的方法問題。基本的引數傳遞機制有兩種 值傳遞和 引用傳遞 以下討論稱呼叫其他函式的函式為主調函式,被呼叫的函式為被調函式。值傳遞 passl by value 過程中,被調函式的形式...

函式的引數傳遞

def func a 1,b 2,c 3 形參有預設值 print a,b,c func func 4,5,6 func 5,6 func 7 func a 8 func a 9,b 10 func 11,c 12 func 11,a 12 和func a 12,13 是錯誤的 def calcsu...

函式引數的傳遞

先來幾道題壓壓驚先 第一題 void exchg1 int x,int y int main void 問題是x y a b 第二題 void exchg2 int px,int py int main void 問題是 px py a b 第三題 void exchg3 int x,int y i...