Python中函數(shù)的參數(shù)傳遞與可變長(zhǎng)參數(shù)介紹
1.Python中也有像C++一樣的默認(rèn)缺省函數(shù)
def foo(text,num=0):
print text,num
foo("asd") #asd 0
foo("def",100) #def 100
定義有默認(rèn)參數(shù)的函數(shù)時(shí),這些默認(rèn)值參數(shù) 位置必須都在非默認(rèn)值參數(shù)后面。
調(diào)用時(shí)提供默認(rèn)值參數(shù)值時(shí),使用提供的值,否則使用默認(rèn)值。
2.Python可以根據(jù)參數(shù)名傳參數(shù)
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行,沒(méi)有指定參數(shù)名,按照順序傳參數(shù)。
第5行,指定參數(shù)名,可以按照參數(shù)名稱(chēng)傳參數(shù)。
3.可變長(zhǎng)度參數(shù)
#coding:utf-8 #設(shè)置python文件的編碼為utf-8,這樣就可以寫(xiě)入中文注釋
def foo(arg1,*tupleArg,**dictArg):
print "arg1=",arg1 #formal_args
print "tupleArg=",tupleArg #()
print "dictArg=",dictArg #[]
foo("formal_args")
上面函數(shù)中的參數(shù),tupleArg前面“*”表示這個(gè)參數(shù)是一個(gè)元組參數(shù),從程序的輸出可以看出,默認(rèn)值為();dicrtArg前面有“**”表示這個(gè)字典參數(shù)(鍵值對(duì)參數(shù))??梢园裻upleArg、dictArg看成兩個(gè)默認(rèn)參數(shù)。多余的非關(guān)鍵字參數(shù),函數(shù)調(diào)用時(shí)被放在元組參數(shù)tupleArg中;多余的關(guān)鍵字參數(shù),函數(shù)調(diào)用時(shí)被放字典參數(shù)dictArg中。
下面是可變長(zhǎng)參數(shù)的一些用法:
#coding:utf-8 #設(shè)置python文件的編碼為utf-8,這樣就可以寫(xiě)入中文注釋
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行。
參數(shù)中如果使用“*”元組參數(shù)或者“**”字典參數(shù),這兩種參數(shù)應(yīng)該放在參數(shù)列表最后。并且“*”元組參數(shù)位于“**”字典參數(shù)之前。
關(guān)鍵字參數(shù)rt=123,因?yàn)楹瘮?shù)foo(arg1,arg2="OK",*tupleArg,**dictArg)中沒(méi)有rt參數(shù),所以最后也歸到字典參數(shù)中。
(2)如代碼第14行。
元組對(duì)象前面如果不帶“*”、字典對(duì)象如果前面不帶“**”,則作為普通的對(duì)象傳遞參數(shù)。
多余的普通參數(shù),在foo(123,myList,myDict)中,123賦給參數(shù)arg1,myList賦給參數(shù)arg2,多余的參數(shù)myDict默認(rèn)為元組賦給myList。
- Python函數(shù)中的可變長(zhǎng)參數(shù)詳解
- Python函數(shù)中*args和**kwargs來(lái)傳遞變長(zhǎng)參數(shù)的用法
- Python函數(shù)中的不定長(zhǎng)參數(shù)相關(guān)知識(shí)總結(jié)
- python print 格式化輸出,動(dòng)態(tài)指定長(zhǎng)度的實(shí)現(xiàn)
- python 窮舉指定長(zhǎng)度的密碼例子
- python函數(shù)不定長(zhǎng)參數(shù)使用方法解析
- python 初始化一個(gè)定長(zhǎng)的數(shù)組實(shí)例
- Python技巧之變長(zhǎng)和定長(zhǎng)序列拆分
相關(guān)文章
Python實(shí)現(xiàn)查看系統(tǒng)啟動(dòng)項(xiàng)功能示例
這篇文章主要介紹了Python實(shí)現(xiàn)查看系統(tǒng)啟動(dòng)項(xiàng)功能,涉及Python針對(duì)系統(tǒng)注冊(cè)表啟動(dòng)項(xiàng)的相關(guān)讀取操作實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-05-05運(yùn)行Python編寫(xiě)的程序方法實(shí)例
在本篇文章里小編給大家整理了關(guān)于運(yùn)行Python編寫(xiě)的程序方法實(shí)例內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。2020-10-10pytorch中dataloader 的sampler 參數(shù)詳解
這篇文章主要介紹了pytorch中dataloader 的sampler 參數(shù)詳解,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的小伙伴可以參考一下2022-09-09pyqt5、qtdesigner安裝和環(huán)境設(shè)置教程
這篇文章主要介紹了pyqt5、qtdesigner安裝和環(huán)境設(shè)置方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-09-09Python深入06——python的內(nèi)存管理詳解
本篇文章主要介紹了python的內(nèi)存管理詳解,語(yǔ)言的內(nèi)存管理是語(yǔ)言設(shè)計(jì)的一個(gè)重要方面。它是決定語(yǔ)言性能的重要因素。有興趣的同學(xué)可以了解一下。2016-12-12Python使用scrapy爬取陽(yáng)光熱線(xiàn)問(wèn)政平臺(tái)過(guò)程解析
這篇文章主要介紹了Python使用scrapy爬取陽(yáng)光熱線(xiàn)問(wèn)政平臺(tái)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08