熱線電話:13121318867

登錄
首頁精彩閱讀Python中函數的參數傳遞與可變長參數介紹
Python中函數的參數傳遞與可變長參數介紹
2017-10-12
收藏

Python中函數的參數傳遞與可變長參數介紹

這篇文章主要介紹了Python中函數的參數傳遞與可變長參數介紹,本文分別給出多個代碼實例來講解多種多樣的函數參數,需要的朋友可以參考下


1.Python中也有像C++一樣的默認缺省函數

代碼如下:
def foo(text,num=0):
    print text,num

foo("asd")  #asd 0
foo("def",100)  #def 100

定義有默認參數的函數時,這些默認值參數 位置必須都在非默認值參數后面。

調用時提供默認值參數值時,使用提供的值,否則使用默認值。

2.Python可以根據參數名傳參數

復制代碼代碼如下:

def foo(ip,port):
    print "%s:%d" % (ip,port)

foo("192.168.1.0",3306) #192.168.1.0:3306
foo(port=8080,ip="127.0.0.1")   #127.0.0.1:8080


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

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

3.可變長度參數

代碼如下:
#coding:utf-8       #設置python文件的編碼為utf-8,這樣就可以寫入中文注釋
def foo(arg1,*tupleArg,**dictArg):
    print "arg1=",arg1  #formal_args
    print "tupleArg=",tupleArg  #()
    print "dictArg=",dictArg    #[]
foo("formal_args")


上面函數中的參數,tupleArg前面“*”表示這個參數是一個元組參數,從程序的輸出可以看出,默認值為();dicrtArg前面有“**”表示這個字典參數(鍵值對參數)??梢园裻upleArg、dictArg看成兩個默認參數。多余的非關鍵字參數,函數調用時被放在元組參數tupleArg中;多余的關鍵字參數,函數調用時被放字典參數dictArg中。

下面是可變長參數的一些用法:

代碼如下:
#coding:utf-8       #設置python文件的編碼為utf-8,這樣就可以寫入中文注釋
def foo(arg1,arg2="OK",*tupleArg,**dictArg):
    print "arg1=",arg1
    print "arg2=",arg2
    for i,element in enumerate(tupleArg):
        print "tupleArg %d-->%s" % (i,str(element))
    for  key in dictArg:
        print "dictArg %s-->%s" %(key,dictArg[key])

myList=["my1","my2"]
myDict={"name":"Tom","age":22}
foo("formal_args",arg2="argSecond",a=1)
print "*"*40
foo(123,myList,myDict)
print "*"*40
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。



數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢