Python函式的引數傳遞(3)

2021-07-16 10:33:26 字數 1196 閱讀 4678

def printall(**kargs):

for k in kargs:

print k, ':', kargs[k]

printall(a=1, b=2, c=3)

printall(x=4, y=5)

print '------'

def func(x, y=5, *a, **b):

print x, y, a, b

func(1)

func(1,2)

func(1,2,3)

func(1,2,3,4)

func(x=1)

func(x=1,y=1)

func(x=1,y=1,a=1)

func(x=1,y=1,a=1,b=1)

func(1,y=1)

func(1,2,3,4,a=1)

func(1,2,3,4,k=1,t=2,o=3)

結果:

a : 1

c : 3

b : 2

y : 5

x : 4

------

1 5 () {}

1 2 () {}

1 2 (3,) {}

1 2 (3, 4) {}

1 5 () {}

1 1 () {}

1 1 ()

1 1 ()

1 1 () {}

1 2 (3, 4)

1 2 (3, 4)

注意:在混合使用時,首先要注意函式的寫法,必須遵守:

帶有預設值的形參(arg=)須在無預設值的形參(arg)之後;

元組引數(*args)須在帶有預設值的形參(arg=)之後;

字典引數(**kargs)須在元組引數(*args)之後

呼叫時也需要遵守:

指定引數名稱的引數要在無指定引數名稱的引數之後;

不可以重複傳遞,即按順序提供某引數之後,又指定名稱傳遞。

而在函式被呼叫時,引數的傳遞過程為:

1.按順序把無指定引數的實參賦值給形參;

2.把指定引數名稱(arg=v)的實參賦值給對應的形參;

3.將多餘的無指定引數的實參打包成乙個 tuple 傳遞給元組引數(*args);

4.將多餘的指定引數名的實參打包成乙個 dict 傳遞給字典引數(**kargs)。

Python的函式引數傳遞

原址 我想,這個標題或許是很多初學者的問題。尤其是像我這樣的對c c 比較熟悉,剛剛進入python殿堂的朋友們 c c 的函式引數的傳遞方式根深蒂固的影響這我們的思維 引用?傳值?究竟是那種呢。呵呵,語言的特性決定了是使用的方法,那麼,現在我們來 一下python的函式引數傳遞方式。在開始之前,我...

Python的函式引數傳遞

看兩個例子 a 1 deffun a a 2 fun a print a 1a deffun a fun a print a 1 所有的變數都可以理解是記憶體中乙個物件的 引用 或者,也可以看似c中void 的感覺。a 1 deffun a print func in id a func in 41...

Python的函式引數傳遞

看兩個例子 python a 1 def fun a a 2 fun a print a 1 a 1 def fun a a 2 fun a print a 1 python a def fun a fun a print a 1 所有的變數都可以理解是記憶體中乙個物件的 引用 或者,也可以看似c中...