Python中函式的引數傳遞與可變長引數

2021-10-02 12:51:21 字數 2544 閱讀 1337

1.python中也有像c++一樣的預設預設函式

1

deffoo

(text,num=0)

:2print text,num

34 foo(

"asd"

)#asd 0

5 foo(

"def"

,100

)#def 100

定義有預設引數的函式時,這些預設值引數位置必須都在非預設值引數後面。

呼叫時提供預設值引數值時,使用提供的值,否則使用預設值。

2.python可以根據引數名傳引數

1

deffoo

(ip,port):2

print

"%s:%d"

%(ip,port)

34 foo(

"192.168.1.0"

,3306

)#192.168.1.0:3306

5 foo(port=

8080

,ip=

"127.0.0.1"

)#127.0.0.1:8080

第4行,沒有指定引數名,按照順序傳引數。

第5行,指定引數名,可以按照引數名稱傳引數。

3.可變長度引數

1

#coding:utf-8 #設定python檔案的編碼為utf-8,這樣就可以寫入中文注釋

2def

foo(arg1,

*tuplearg,

**dictarg):3

print

"arg1="

,arg1 #formal_args

4print

"tuplearg="

,tuplearg #()

5print

"dictarg="

,dictarg #

6 foo(

"formal_args"

)

上面函式中的引數,tuplearg前面「*」表示這個引數是乙個元組引數,從程式的輸出可以看出,預設值為();dicrtarg前面有「**」表示這個字典引數(鍵值對引數)。可以把tuplearg、dictarg看成兩個預設引數。多餘的非關鍵字引數,函式呼叫時被放在元組引數tuplearg中;多餘的關鍵字引數,函式呼叫時被放字典引數dictarg中。下面是可變長引數的一些用法:

1

#coding:utf-8 #設定python檔案的編碼為utf-8,這樣就可以寫入中文注釋

2def

foo(arg1,arg2=

"ok"

,*tuplearg,

**dictarg):3

print

"arg1="

,arg1

4print

"arg2="

,arg2

5for i,element in

enumerate

(tuplearg):6

print

"tuplearg %d-->%s"

%(i,

str(element))7

for key in dictarg:

8print

"dictarg %s-->%s"

%(key,dictarg[key])9

10 mylist=

["my1"

,"my2"

]11 mydict=

12 foo(

"formal_args"

,arg2=

"argsecond"

,a=1)13

print

"*"*

4014 foo(

123,mylist,mydict)

15print

"*"*

4016 foo(

123,rt=

123,

*mylist,

**mydict)

輸出為:

從上面的程式可以看出:

(1)如**第16行。

引數中如果使用「」元組引數或者「**」字典引數,這兩種引數應該放在引數列表最後。並且「」元組引數位於「**」字典引數之前。

關鍵字引數rt=123,因為函式foo(arg1,arg2=「ok」,*tuplearg,**dictarg)中沒有rt引數,所以最後也歸到字典引數中。

(2)如**第14行。

元組物件前面如果不帶「*」、字典物件如果前面不帶「**」,則作為普通的物件傳遞引數。

多餘的普通引數,在foo(123,mylist,mydict)中,123賦給引數arg1,mylist賦給引數arg2,多餘的引數mydict預設為元組賦給mylist。

Python中函式引數的傳遞

python中函式引數的傳遞是通過 賦值 來傳遞的。但這條規則只回答了函式引數傳遞的 戰略問題 並沒有回答 戰術問題 也就說沒有回答怎麼賦值的問題。函式引數的使用可以分為兩個方面,一是函式引數如何定義,二是函式在呼叫時的引數如何解析的。而後者又是由前者決定的。函式引數的定義有四種形式 1.f arg...

python中函式引數的傳遞

實際引數按照前後順序依次賦值給形式引數。def party area,person print 晚上聚會 print 地點 area print 參與人員 person print 有了酒,就有了故事.party 皇家一號 全體人員 函式宣告定義時,可以給某個引數設定預設資料,在呼叫執行時 有預設資...

Python函式中的引數傳遞

函式的引數 1 函式的引數是可選的 2 函式需要處理的資料應該通過引數來傳遞 3 函式名後面括號裡的引數被稱為形參,由於它不是實際存在的引數所以又稱虛擬引數 4 呼叫函式時後面括號裡的引數稱為實參 def create fib n fib list 0 1 for i in range n 2 re...