傳遞方式:
位置傳參
序列傳參
關鍵字傳參
字典關鍵字傳參
實際引數的對應關係和形式引數的對應關係是按位置依次對應
示例: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...