????????我們知道,在調(diào)用函數(shù)時如果不指定某個參數(shù),Python?解釋器會拋出異常。為了解決這個問題,Python 允許為參數(shù)設(shè)置默認值,即在定義函數(shù)時,直接給形式參數(shù)指定一個默認值。這樣的話,即便調(diào)用函數(shù)時沒有給擁有默認值的形參傳遞參數(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è)有默認參數(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 設(shè)有默認值,而 str2 和 str3 沒有默認值,因此 str1 必須位于 str2 和 str3 之后。
????????有讀者可能會問,對于自己自定義的函數(shù),可以輕易知道哪個參數(shù)有默認值,但如果使用 Python 提供的內(nèi)置函數(shù),又或者其它第三方提供的函數(shù),怎么知道哪些參數(shù)有默認值呢?
????????Pyhton 中,可以使用“函數(shù)名.__defaults__”查看函數(shù)的默認值參數(shù)的當前值,其返回值是一個元組。以本節(jié)中的 dis_str() 函數(shù)為例,在其基礎(chǔ)上,執(zhí)行如下代碼:文章來源:http://www.zghlxwxcb.cn/news/detail-404427.html
print(dis_str.__defaults__)
程序執(zhí)行結(jié)果為:文章來源地址http://www.zghlxwxcb.cn/news/detail-404427.html
('http://c.biancheng.net/python/',)
到了這里,關(guān)于Python函數(shù)默認參數(shù)設(shè)置(超級詳細)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!