Python函數(shù)默認(rèn)參數(shù)設(shè)置的具體方法
我們知道,在調(diào)用函數(shù)時(shí)如果不指定某個(gè)參數(shù),Python 解釋器會(huì)拋出異常。為了解決這個(gè)問題,Python 允許為參數(shù)設(shè)置默認(rèn)值,即在定義函數(shù)時(shí),直接給形式參數(shù)指定一個(gè)默認(rèn)值。這樣的話,即便調(diào)用函數(shù)時(shí)沒有給擁有默認(rèn)值的形參傳遞參數(shù),該參數(shù)可以直接使用定義函數(shù)時(shí)設(shè)置的默認(rèn)值。
Python 定義帶有默認(rèn)值參數(shù)的函數(shù),其語法格式如下:
def 函數(shù)名(...,形參名,形參名=默認(rèn)值):
代碼塊
注意,在使用此格式定義函數(shù)時(shí),指定有默認(rèn)值的形式參數(shù)必須在所有沒默認(rèn)值參數(shù)的最后,否則會(huì)產(chǎn)生語法錯(cuò)誤。
下面程序演示了如何定義和調(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 個(gè)參數(shù),其中第 2 個(gè)設(shè)有默認(rèn)參數(shù)。這意味著,在調(diào)用 dis_str() 函數(shù)時(shí),我們可以僅傳入 1 個(gè)參數(shù),此時(shí)該參數(shù)會(huì)傳給 str1 參數(shù),而 str2 會(huì)使用默認(rèn)的參數(shù),如程序中第 6 行代碼所示。
當(dāng)然在調(diào)用 dis_str() 函數(shù)時(shí),也可以給所有的參數(shù)傳值(如第 7 行代碼所示),這時(shí)即便 str2 有默認(rèn)值,它也會(huì)優(yōu)先使用傳遞給它的新值。
同時(shí),結(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)定義一個(gè)有默認(rèn)值參數(shù)的函數(shù)時(shí),有默認(rèn)值的參數(shù)必須位于所有沒默認(rèn)值參數(shù)的后面。因此,下面例子中定義的函數(shù)是不正確的:
#語法錯(cuò)誤 def dis_str(str1="http://jb51.net/python/",str2,str3): pass
顯然,str1 設(shè)有默認(rèn)值,而 str2 和 str3 沒有默認(rèn)值,因此 str1 必須位于 str2 和 str3 之后。
有讀者可能會(huì)問,對(duì)于自己自定義的函數(shù),可以輕易知道哪個(gè)參數(shù)有默認(rèn)值,但如果使用 Python 提供的內(nèi)置函數(shù),又或者其它第三方提供的函數(shù),怎么知道哪些參數(shù)有默認(rèn)值呢?
Pyhton 中,可以使用“函數(shù)名.__defaults__”查看函數(shù)的默認(rèn)值參數(shù)的當(dāng)前值,其返回值是一個(gè)元組。以本節(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)容請(qǐng)搜索腳本之家以前的文章或繼續(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)知識(shí)詳解
- 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)文章
python格式的Caffe圖片數(shù)據(jù)均值計(jì)算學(xué)習(xí)
這篇文章主要為大家介紹了python格式的Caffe圖片數(shù)據(jù)均值計(jì)算學(xué)習(xí)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06
基于本地知識(shí)的問答機(jī)器人langchain-ChatGLM 大語言模型實(shí)現(xiàn)方法詳解
這篇文章主要介紹了基于本地知識(shí)的問答機(jī)器人langchain-ChatGLM 大語言模型實(shí)現(xiàn)方法,結(jié)合具體實(shí)例形式詳細(xì)分析了langchain-ChatGLM的功能、原理、部署方法與操作注意事項(xiàng),需要的朋友可以參考下2023-07-07
python訓(xùn)練數(shù)據(jù)時(shí)打亂訓(xùn)練數(shù)據(jù)與標(biāo)簽的兩種方法小結(jié)
今天小編就為大家分享一篇python訓(xùn)練數(shù)據(jù)時(shí)打亂訓(xùn)練數(shù)據(jù)與標(biāo)簽的兩種方法小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-11-11
使用Python來開發(fā)Markdown腳本擴(kuò)展的實(shí)例分享
這篇文章主要介紹了使用Python來開發(fā)Markdown腳本擴(kuò)展的實(shí)例分享,文中的示例是用來簡單地轉(zhuǎn)換文檔結(jié)構(gòu),主要為了體現(xiàn)一個(gè)思路,需要的朋友可以參考下2016-03-03

