国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術(shù)文章
文章詳情頁

Python新手學(xué)習(xí)函數(shù)默認(rèn)參數(shù)設(shè)置

瀏覽:91日期:2022-07-23 10:00:30

在某些情況下,程序需要在定義函數(shù)時為一個或多個形參指定默認(rèn)值,這樣在調(diào)用函數(shù)時就可以省略為該形參傳入?yún)?shù)值,而是直接使用該形參的默認(rèn)值。

為形參指定默認(rèn)值的語法格式如下:

形參名 = 默認(rèn)值

從上面的語法格式可以看出,形參的默認(rèn)值緊跟在形參之后,中間以英文“=”隔開。

例如,如下程序為 name、message 形參指定了默認(rèn)值:

# 為兩個參數(shù)指定默認(rèn)值def say_hi(name = '孫悟空', message = '歡迎來到C語言中文網(wǎng)'): print(name, ', 您好') print('消息是:', message)# 全部使用默認(rèn)參數(shù)say_hi()# 只有message參數(shù)使用默認(rèn)值say_hi('白骨精')# 兩個參數(shù)都不使用默認(rèn)值say_hi('白骨精', '歡迎學(xué)習(xí)Python')# 只有name參數(shù)使用默認(rèn)值say_hi(message = '歡迎學(xué)習(xí)Python')

上面程序中在定義 say_hi() 函數(shù)時為 name、message 形參指定了默認(rèn)值,因此程序中第一次調(diào)用 say_hi() 函數(shù)時沒有為 name、message 參數(shù)指定參數(shù)值,此時 name、message 參數(shù)將會使用其默認(rèn)值。

程序第二次調(diào)用 say_hi() 函數(shù)時為 name 參數(shù)(使用位置參數(shù))指定了參數(shù)值,此時 message 參數(shù)將會使用默認(rèn)值。

程序第三次調(diào)用 say_hi() 函數(shù)時為 name、message 參數(shù)(使用位置參數(shù))都指定了參數(shù)值,因此這兩個參數(shù)都使用開發(fā)者傳入的參數(shù)值。

程序第四次調(diào)用 say_hi() 函數(shù)時只為 message 參數(shù)(使用關(guān)鍵字參數(shù))傳入了參數(shù)值,此時 name 參數(shù)將使用默認(rèn)值。

運行上面程序,可以看到如下輸出結(jié)果:

孫悟空 , 您好消息是: 歡迎來到C語言中文網(wǎng)白骨精 , 您好消息是: 歡迎來到C語言中文網(wǎng)白骨精 , 您好消息是: 歡迎學(xué)習(xí)Python孫悟空 , 您好消息是: 歡迎學(xué)習(xí)Python

從上面程序可以看出,如果只傳入一個位置參數(shù),由于該參數(shù)位于第一位,系統(tǒng)會將該參數(shù)值傳給 name 參數(shù)。因此,我們不能按如下方式調(diào)用 say_hi() 函數(shù)

say_hi('歡迎學(xué)習(xí)Python')

上面調(diào)用時傳入的“歡迎學(xué)習(xí)Python”字符串將傳給 name 參數(shù),而不是 message 參數(shù)。

我們也不能按如下方式來調(diào)用 say_hi() 函數(shù):

say_hi(name='白骨精', '歡迎學(xué)習(xí)Python')

因為 Python 規(guī)定,關(guān)鍵字參數(shù)必須位于位置參數(shù)的后面。因此提示錯誤:positional argument follows keyword argument。

那么,我們能不能單純地將上面兩個參數(shù)交換位置呢?

#say_hi('歡迎學(xué)習(xí)Python' , name='白骨精')

上面調(diào)用依然是錯誤的,因為第一個字符串沒有指定關(guān)鍵字參數(shù),因此將使用位置參數(shù)為 name 參數(shù)傳入?yún)?shù)值,第二個參數(shù)使用關(guān)鍵字參數(shù)的形式再次為 name 參數(shù)傳入?yún)?shù)值,這意味著兩個參數(shù)值其實都會傳給 name 參數(shù),程序為 name 參數(shù)傳入了多個參數(shù)值。因此提示錯誤:say hi() got multiple values for argument ’name’。

將函數(shù)調(diào)用改為如下兩種形式是正確的:

say_hi('白骨精', message='歡迎學(xué)習(xí)Python')say_hi(name='白骨精', message='歡迎學(xué)習(xí)Python')

上面第一行代碼先使用位置參數(shù)為 name 參數(shù)傳入?yún)?shù)值,再使用關(guān)鍵字參數(shù)為 message 參數(shù)傳入?yún)?shù)值;第二行代碼中的 name、message 參數(shù)都使用關(guān)鍵字參數(shù)傳入?yún)?shù)值。

由于 Python 要求在調(diào)用函數(shù)時關(guān)鍵字參數(shù)必須位于位置參數(shù)的后面,因此在定義函數(shù)時指定了默認(rèn)值的參數(shù)(關(guān)鍵字參數(shù))必須在沒有默認(rèn)值的參數(shù)之后。例如如下代碼:

# 定義一個打印三角形的函數(shù),有默認(rèn)值的參數(shù)必須放在后面def printTriangle(char, height = 5) : for i in range(1, height + 1) : # 先打印一排空格 for j in range(height - i) : print(’ ’, end = ’’) # 再打印一排特殊字符 for j in range(2 * i - 1) : print(char, end = ’’) print()printTriangle(’@’, 6)printTriangle(’#’, height=7)printTriangle(char = ’*’)

上面程序定義了二個 printTriangle() 函數(shù),該函數(shù)的第一個 char 參數(shù)沒有默認(rèn)值,第二個 height 參數(shù)有默認(rèn)值。

上面程序中第一次調(diào)用 printTriangle() 時,程序使用兩個位置參數(shù)分別為 char、height 傳入?yún)?shù)值,這當(dāng)然是允許的;第二次調(diào)用 printTriangle() 時,第一個參數(shù)使用位置參數(shù),那么該參數(shù)值將傳給 char 參數(shù),第二個參數(shù)使用關(guān)鍵字參數(shù)為 height 參數(shù)傳入?yún)?shù)值,這也是允許的;第三次調(diào)用 printTriangle() 時,只使用關(guān)鍵字參數(shù)為 char 參數(shù)傳入?yún)?shù)值,此時 height 參數(shù)將使用默認(rèn)值,這是符合語法的。

注意點補(bǔ)充:

說明及注意點

a. 在使用缺省參數(shù)后,對于函數(shù)的必填參數(shù)必須在前,默認(rèn)參數(shù)在后。

b. 默認(rèn)參數(shù)在一個函數(shù)中可以有多個。

c. 當(dāng)一個函數(shù)中的某個參數(shù)的改動不大,就可以考慮將這個參數(shù)設(shè)置為默認(rèn)參數(shù),比如說一個人的民族,這種參數(shù)就可以設(shè)置為缺省參數(shù)。

到此這篇關(guān)于Python新手學(xué)習(xí)函數(shù)默認(rèn)參數(shù)設(shè)置的文章就介紹到這了,更多相關(guān)Python函數(shù)默認(rèn)參數(shù)設(shè)置內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 大冶市| 嵩明县| 达日县| 大厂| 弥勒县| 龙里县| 泰顺县| 渭南市| 南昌县| 浦城县| 班戈县| 西充县| 富平县| 忻州市| 无棣县| 天镇县| 长沙市| 交口县| 兴仁县| 衡东县| 科尔| 广灵县| 龙山县| 谢通门县| 科尔| 新宾| 濮阳市| 巧家县| 双流县| 扎鲁特旗| 奇台县| 梅州市| 长岛县| 灵川县| 沽源县| 饶阳县| 张家界市| 吉林省| 岳西县| 嘉兴市| 巴青县|