您好,登錄后才能下訂單哦!
這篇文章主要介紹“Python函數(shù)默認參數(shù)如何設置”的相關(guān)知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“Python函數(shù)默認參數(shù)如何設置”文章能幫助大家解決問題。
我們知道,在調(diào)用函數(shù)時如果不指定某個參數(shù),Python 解釋器會拋出異常。為了解決這個問題,Python 允許為參數(shù)設置默認值,即在定義函數(shù)時,直接給形式參數(shù)指定一個默認值。這樣的話,即便調(diào)用函數(shù)時沒有給擁有默認值的形參傳遞參數(shù),該參數(shù)可以直接使用定義函數(shù)時設置的默認值。
Python 定義帶有默認值參數(shù)的函數(shù),其語法格式如下:
def 函數(shù)名(...,形參名,形參名=默認值): 代碼塊
注意,在使用此格式定義函數(shù)時,指定有默認值的形式參數(shù)必須在所有沒默認值參數(shù)的最后,否則會產(chǎn)生語法錯誤。
下面程序演示了如何定義和調(diào)用有默認參數(shù)的函數(shù):
#str1沒有默認參數(shù),str2有默認參數(shù) def dis_str(str1,str2 = "http://c.biancheng.net/python/"): print("str1:",str1) print("str2:",str2) dis_str("http://c.biancheng.net/shell/") dis_str("http://c.biancheng.net/java/","http://c.biancheng.net/golang/")
運行結(jié)果為:
str1: http://c.biancheng.net/shell/
str2: http://c.biancheng.net/python/
str1: http://c.biancheng.net/java/
str2: http://c.biancheng.net/golang/
上面程序中,dis_str() 函數(shù)有 2 個參數(shù),其中第 2 個設有默認參數(shù)。這意味著,在調(diào)用 dis_str() 函數(shù)時,我們可以僅傳入 1 個參數(shù),此時該參數(shù)會傳給 str1 參數(shù),而 str2 會使用默認的參數(shù),如程序中第 6 行代碼所示。
當然在調(diào)用 dis_str() 函數(shù)時,也可以給所有的參數(shù)傳值(如第 7 行代碼所示),這時即便 str2 有默認值,它也會優(yōu)先使用傳遞給它的新值。
同時,結(jié)合關(guān)鍵字參數(shù),以下 3 種調(diào)用 dis_str() 函數(shù)的方式也是可以的:
dis_str(str1 = "http://c.biancheng.net/shell/") dis_str("http://c.biancheng.net/java/",str2 = "http://c.biancheng.net/golang/") dis_str(str1 = "http://c.biancheng.net/java/",str2 = "http://c.biancheng.net/golang/")
再次強調(diào),當定義一個有默認值參數(shù)的函數(shù)時,有默認值的參數(shù)必須位于所有沒默認值參數(shù)的后面。因此,下面例子中定義的函數(shù)是不正確的:
#語法錯誤 def dis_str(str1="http://c.biancheng.net/python/",str2,str3): pass
顯然,str1 設有默認值,而 str2 和 str3 沒有默認值,因此 str1 必須位于 str2 和 str3 之后。
有讀者可能會問,對于自己自定義的函數(shù),可以輕易知道哪個參數(shù)有默認值,但如果使用 Python 提供的內(nèi)置函數(shù),又或者其它第三方提供的函數(shù),怎么知道哪些參數(shù)有默認值呢?
Pyhton 中,可以使用“函數(shù)名.__defaults__”查看函數(shù)的默認值參數(shù)的當前值,其返回值是一個元組。以本節(jié)中的 dis_str() 函數(shù)為例,在其基礎上,執(zhí)行如下代碼:
print(dis_str.__defaults__)
程序執(zhí)行結(jié)果為:
('http://c.biancheng.net/python/',)
關(guān)于“Python函數(shù)默認參數(shù)如何設置”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識,可以關(guān)注億速云行業(yè)資訊頻道,小編每天都會為大家更新不同的知識點。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。