Python函式引數

2021-07-25 23:32:37 字數 1449 閱讀 9945

今天來說說最為靈活的一種引數傳遞方式:

func(**kargs)

上次說的 func(*args) 方式是把引數作為 tuple 傳入函式內部。而 func(**kargs) 則是把引數以鍵值對字典的形式傳入。

示例:def printall(**kargs):

for k in kargs:

print k, ':', kargs[k]

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

printall(x=4, y=5)

輸出:a : 1

c : 3

b : 2

y : 5

x : 4

字典是無序的,所以在輸出的時候,並不一定按照提供引數的順序。同樣在呼叫時,引數的順序無所謂,只要對應合適的形參名就可以了。於是,採用這種引數傳遞的方法,可以不受引數數量、位置的限制。

當然,這還不夠。python 的函式呼叫方式非常靈活,前面所說的幾種引數呼叫方式,可以混合在一起使用。看下面這個例子:

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)

輸出: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引數函式 Python函式引數總結

coding utf 8 整理一下python函式的各種引數型別 位置引數 呼叫函式時,傳入的兩個值按照位置順序依次賦給引數 def power x,n s 1 while n 0 n n 1 s s x return s print power 5,2 預設引數 簡化函式的呼叫 def power...

python 引數 Python函式 引數

python中將函式作為引數,區分將引數直接寫成函式名和函式名 的區別。def fun1 fun print print print fun 執行fun1 fun4 時,fun為函式fun3的返回值x print type fun type fun type fun fun 執行fun1 fun4 ...

函式傳引數 python 函式引數

1.位置引數 最熟悉的一種引數形式,優點 簡單。缺點 傳遞引數不夠靈活 2.預設引數 優點 提高了 的復用性 缺點 容易產生二義性 注意事項 一是必選引數在前,預設引數在後。二是如何設定預設引數。當函式有多個引數時,把變化大的引數放前面,變化小的引數放後面。變化小的引數就可以作為預設引數。def p...