Python函數(shù)默認(rèn)參數(shù)設(shè)置的具體方法
我們知道,在調(diào)用函數(shù)時如果不指定某個參數(shù),Python 解釋器會拋出異常。為了解決這個問題,Python 允許為參數(shù)設(shè)置默認(rèn)值,即在定義函數(shù)時,直接給形式參數(shù)指定一個默認(rèn)值。這樣的話,即便調(diào)用函數(shù)時沒有給擁有默認(rèn)值的形參傳遞參數(shù),該參數(shù)可以直接使用定義函數(shù)時設(shè)置的默認(rèn)值。
Python 定義帶有默認(rèn)值參數(shù)的函數(shù),其語法格式如下:
def 函數(shù)名(...,形參名,形參名=默認(rèn)值): 代碼塊
注意,在使用此格式定義函數(shù)時,指定有默認(rèn)值的形式參數(shù)必須在所有沒默認(rèn)值參數(shù)的最后,否則會產(chǎn)生語法錯誤。
下面程序演示了如何定義和調(diào)用有默認(rèn)參數(shù)的函數(shù):
#str1沒有默認(rèn)參數(shù),str2有默認(rèn)參數(shù) def dis_str(str1,str2 = "http://jb51.net/python/"): print("str1:",str1) print("str2:",str2) dis_str("http://jb51.net/shell/") dis_str("http://jb51.net/java/","http://jb51.net/golang/")
運(yùn)行結(jié)果為:
str1: http://jb51.net/shell/
str2: http://jb51.net/python/
str1: http://jb51.net/java/
str2: http://jb51.net/golang/
上面程序中,dis_str() 函數(shù)有 2 個參數(shù),其中第 2 個設(shè)有默認(rèn)參數(shù)。這意味著,在調(diào)用 dis_str() 函數(shù)時,我們可以僅傳入 1 個參數(shù),此時該參數(shù)會傳給 str1 參數(shù),而 str2 會使用默認(rèn)的參數(shù),如程序中第 6 行代碼所示。
當(dāng)然在調(diào)用 dis_str() 函數(shù)時,也可以給所有的參數(shù)傳值(如第 7 行代碼所示),這時即便 str2 有默認(rèn)值,它也會優(yōu)先使用傳遞給它的新值。
同時,結(jié)合關(guān)鍵字參數(shù),以下 3 種調(diào)用 dis_str() 函數(shù)的方式也是可以的:
dis_str(str1 = "http://jb51.net/shell/") dis_str("http://jb51.net/java/",str2 = "http://jb51.net/golang/") dis_str(str1 = "http://jb51.net/java/",str2 = "http://jb51.net/golang/")
再次強(qiáng)調(diào),當(dāng)定義一個有默認(rèn)值參數(shù)的函數(shù)時,有默認(rèn)值的參數(shù)必須位于所有沒默認(rèn)值參數(shù)的后面。因此,下面例子中定義的函數(shù)是不正確的:
#語法錯誤 def dis_str(str1="http://jb51.net/python/",str2,str3): pass
顯然,str1 設(shè)有默認(rèn)值,而 str2 和 str3 沒有默認(rèn)值,因此 str1 必須位于 str2 和 str3 之后。
有讀者可能會問,對于自己自定義的函數(shù),可以輕易知道哪個參數(shù)有默認(rèn)值,但如果使用 Python 提供的內(nèi)置函數(shù),又或者其它第三方提供的函數(shù),怎么知道哪些參數(shù)有默認(rèn)值呢?
Pyhton 中,可以使用“函數(shù)名.__defaults__”查看函數(shù)的默認(rèn)值參數(shù)的當(dāng)前值,其返回值是一個元組。以本節(jié)中的 dis_str() 函數(shù)為例,在其基礎(chǔ)上,執(zhí)行如下代碼:
print(dis_str.__defaults__)
程序執(zhí)行結(jié)果為:
('http://jb51.net/python/',)
到此這篇關(guān)于Python函數(shù)默認(rèn)參數(shù)設(shè)置的具體方法的文章就介紹到這了,更多相關(guān)Python函數(shù)默認(rèn)參數(shù)設(shè)置內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- python函數(shù)默認(rèn)參數(shù)使用避坑指南
- Python如何定義有默認(rèn)參數(shù)的函數(shù)
- Python新手學(xué)習(xí)函數(shù)默認(rèn)參數(shù)設(shè)置
- python默認(rèn)參數(shù)調(diào)用方法解析
- python 默認(rèn)參數(shù)相關(guān)知識詳解
- Python中的默認(rèn)參數(shù)實(shí)例分析
- Python進(jìn)階-函數(shù)默認(rèn)參數(shù)(詳解)
- python 默認(rèn)參數(shù)問題的陷阱
- Python中的默認(rèn)參數(shù)詳解
- Python默認(rèn)參數(shù)的使用機(jī)制
相關(guān)文章
pandas實(shí)現(xiàn)數(shù)據(jù)可視化的示例代碼
本文主要介紹了pandas實(shí)現(xiàn)數(shù)據(jù)可視化的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05解決pycharm debug時界面下方不出現(xiàn)step等按鈕及變量值的問題
這篇文章主要介紹了解決pycharm debug時界面下方不出現(xiàn)step等按鈕及變量值的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06Python爬蟲抓取技術(shù)的一些經(jīng)驗(yàn)
這篇文章主要介紹了Python爬蟲抓取技術(shù)的一些經(jīng)驗(yàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-07-07Python實(shí)現(xiàn)批量采集商品數(shù)據(jù)的示例詳解
這篇文章主要為大家詳細(xì)介紹了如何利用Python實(shí)現(xiàn)批量采集商品的數(shù)據(jù),文中的示例代碼講解詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03python實(shí)現(xiàn)經(jīng)緯度采樣的示例代碼
這篇文章主要介紹了python實(shí)現(xiàn)經(jīng)緯度采樣的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12python不到50行代碼完成了多張excel合并的實(shí)現(xiàn)示例
這篇文章主要介紹了python不到50行代碼完成了多張excel合并的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05tensor和numpy的互相轉(zhuǎn)換的實(shí)現(xiàn)示例
這篇文章主要介紹了tensor和numpy的互相轉(zhuǎn)換的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08