欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python函數(shù)的參數(shù)類(lèi)型和使用技巧詳解

 更新時(shí)間:2023年08月18日 11:04:30   作者:天元浪子  
這篇文章主要介紹了Python函數(shù)的參數(shù)類(lèi)型和使用技巧詳解,函數(shù)指通過(guò)專(zhuān)門(mén)的代碼組織,用來(lái)實(shí)現(xiàn)特定功能的代碼段,具有相對(duì)的獨(dú)立性,可以被其他代碼重復(fù)調(diào)用,需要的朋友可以參考下

Python函數(shù)的參數(shù)類(lèi)型和使用技巧詳解

先來(lái)定義一個(gè)計(jì)算體重指數(shù)(BMI)的函數(shù)。

體重指數(shù)就是體重與身高的平方之比,其中體重以千克為單位,身高以米為單位。

 def bmi(height, weight, name):
	i = weight/height**2
	print('%s的體重指數(shù)為%0.1f'%(name, i))
 bmi(1.75, 75, 'Xufive')
#Xufive的體重指數(shù)為24.5

自定義函數(shù)bmi有三個(gè)參數(shù),每個(gè)參數(shù)都有明確的含義。

調(diào)用這個(gè)函數(shù)時(shí),必須按照定義的順序傳入這三個(gè)參數(shù),缺一不可。

這也是Python函數(shù)最基本的參數(shù)傳遞規(guī)則。

接下來(lái)把bmi函數(shù)稍微改造一下,給name參數(shù)指定一個(gè)默認(rèn)值。

 def bmi(height, weight, name='您'):
	i = weight/height**2
	print('%s的體重指數(shù)為%0.1f'%(name, i))
 bmi(1.75,75) # 可以不傳遞name參數(shù),使用默認(rèn)值
#您的體重指數(shù)為24.5
 bmi(1.75,75,'Xufive') # 也可以傳遞name參數(shù)
#Xufive的體重指數(shù)為24.5

現(xiàn)在bmi函數(shù)就有了兩種類(lèi)型的參數(shù):weight和height,它們是函數(shù)調(diào)用時(shí)必不可少的參數(shù),且順序必須與函數(shù)定義的保持一致,這樣的參數(shù)稱(chēng)為 位置參數(shù)

name是函數(shù)調(diào)用時(shí)可有可無(wú)的參數(shù)(如未提供,則使用默認(rèn)值),這樣的參數(shù)稱(chēng)為 默認(rèn)參數(shù)

默認(rèn)參數(shù)可以有多個(gè)。

為了使結(jié)果更準(zhǔn)確,可以考慮使用最近一段時(shí)期內(nèi)多個(gè)體重的均值來(lái)計(jì)算體重指數(shù),這就意味著需要輸入多個(gè)體重值。

我們固然可以一個(gè)體重的元組或列表傳給weight,但這樣weight和height就不是同一種類(lèi)型了,在形式上失去了美感,在使用時(shí)也容易產(chǎn)生誤會(huì)。最好的方式就是讓函數(shù)可以接受不確定個(gè)數(shù)的體重參數(shù)。

 def bmi(height, *args, name='您'):
	i = (sum(args)/len(args))/height**2
	print('%s的體重指數(shù)為%0.1f'%(name, i))
 bmi(1.75, 75, name='xufive')
#xufive的體重指數(shù)為24.5
 bmi(1.75, 75, 74)
#您的體重指數(shù)為24.3
 bmi(1.75, 75, 74, 75.5, 74.7, name='xufive')
#xufive的體重指數(shù)為24.4

實(shí)際上,像下面這樣調(diào)用函數(shù)也沒(méi)有問(wèn)題。

 weight = [75, 74, 75.5, 74.7]
 bmi(1.75, *weight, name='xufive')
#xufive的體重指數(shù)為24.4

這下就有點(diǎn)復(fù)雜了,bmi函數(shù)有了三種類(lèi)型的參數(shù)。除了位置參數(shù)和默認(rèn)參數(shù),又多了一種 可變參數(shù) ,即bmi函數(shù)可以接受不限數(shù)量的參數(shù)。在函數(shù)定義時(shí),可變參數(shù)名前面冠以“*”號(hào);在函數(shù)體內(nèi),可變參數(shù)相當(dāng)于一個(gè)元組。

如此一來(lái),就產(chǎn)生了一個(gè)新的問(wèn)題:三種類(lèi)型的參數(shù)應(yīng)該以怎樣的順序被定義呢?

位置參數(shù)排在首位,這一點(diǎn)沒(méi)有異議。默認(rèn)參數(shù)原則上放在最后,但調(diào)用時(shí)必須加上參數(shù)名(如上面的例子),否則函數(shù)無(wú)法區(qū)分究竟是可變參數(shù)還是默認(rèn)參數(shù)。

默認(rèn)參數(shù)也可以放在可變參數(shù)之前(不建議這樣做),但調(diào)用時(shí)不能使用參數(shù)名,即便使用默認(rèn)值也不能省略參數(shù),否則函數(shù)會(huì)用后面的可變參數(shù)的第一個(gè)值(如果有的話)強(qiáng)制為其賦值。

下面說(shuō)一說(shuō)更復(fù)雜的情況。除了上面介紹的三種類(lèi)型的參數(shù)外,Python函數(shù)還支持第四種類(lèi)型的參數(shù): 關(guān)鍵字參數(shù) 。

關(guān)鍵字參數(shù)由不限數(shù)量的鍵值對(duì)組成。在函數(shù)定義時(shí),關(guān)鍵字參數(shù)名前面冠以“**”號(hào);在函數(shù)體內(nèi),關(guān)鍵字參數(shù)相當(dāng)于一個(gè)字典。

 def bmi(height, *args, name='您', **kwds):
	i = (sum(args)/len(args))/height**2
	print('%s的體重指數(shù)為%0.1f'%(name, i))
	for key in kwds:
		print('%s的%s是%s'%(name, key, str(kwds[key])))
 bmi(1.75, 75, 74, 75.5, 74.7, name='Xufive')
Xufive的體重指數(shù)為24.4
 bmi(1.75, 75, 74, name='Xufive', 性別='男', 愛(ài)好='攝影')
#Xufive的體重指數(shù)為24.3
#Xufive的性別是男
#Xufive的愛(ài)好是攝影
 bmi(1.75, 75, 74, 性別='男', 愛(ài)好='攝影', name='Xufive')
#Xufive的體重指數(shù)為24.3
#Xufive的性別是男
#Xufive的愛(ài)好是攝影
 bmi(1.75, 75, 74, 75.5, 74.7, 性別='男', 愛(ài)好='攝影')
#您的體重指數(shù)為24.4
#您的性別是男
#您的愛(ài)好是攝影

如果一個(gè)函數(shù)同時(shí)具備了上述四種類(lèi)型的參數(shù),函數(shù)定義時(shí)參數(shù)的正確順序應(yīng)該是位置參數(shù)排在首位,可變參數(shù)次之,默認(rèn)參數(shù)再次之,關(guān)鍵字參數(shù)排在末尾。

函數(shù)調(diào)用時(shí),如果需要指定默認(rèn)參數(shù),其參數(shù)名不能省略,位置在可變參數(shù)之后,可以在關(guān)鍵字參數(shù)之前,也可以在其后,也可以混雜其中。

到此這篇關(guān)于Python函數(shù)的參數(shù)類(lèi)型和使用技巧詳解的文章就介紹到這了,更多相關(guān)Python函數(shù)的參數(shù)類(lèi)型內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • pyqt5主窗口按鍵彈出子窗口的實(shí)現(xiàn)

    pyqt5主窗口按鍵彈出子窗口的實(shí)現(xiàn)

    本文主要介紹了pyqt5主窗口按鍵彈出子窗口的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • 解決Pycharm模塊安裝慢問(wèn)題的兩種方法

    解決Pycharm模塊安裝慢問(wèn)題的兩種方法

    很多人在學(xué)習(xí)Python時(shí),都會(huì)使用PyCharm這個(gè)編譯器,下面這篇文章主要給大家介紹了關(guān)于解決Pycharm模塊安裝慢問(wèn)題的兩種方法,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-12-12
  • Python2升級(jí)/安裝pip報(bào)錯(cuò)問(wèn)題及解決

    Python2升級(jí)/安裝pip報(bào)錯(cuò)問(wèn)題及解決

    這篇文章主要介紹了Python2升級(jí)/安裝pip報(bào)錯(cuò)問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • Python調(diào)整數(shù)組形狀如何實(shí)現(xiàn)

    Python調(diào)整數(shù)組形狀如何實(shí)現(xiàn)

    這篇文章主要介紹了Python調(diào)整數(shù)組形狀如何實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2022-12-12
  • 詳解python uiautomator2 watcher的使用方法

    詳解python uiautomator2 watcher的使用方法

    這篇文章主要介紹了python uiautomator2 watcher的使用方法,該方是基于uiautomator2如下版本進(jìn)行驗(yàn)證,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2019-09-09
  • 詳解python數(shù)據(jù)結(jié)構(gòu)之棧stack

    詳解python數(shù)據(jù)結(jié)構(gòu)之棧stack

    這篇文章主要介紹了詳解python數(shù)據(jù)結(jié)構(gòu)之棧stack,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python的小伙伴們有很好的幫助,需要的朋友可以參考下
    2021-05-05
  • 詳解Python中映射類(lèi)型的內(nèi)建函數(shù)和工廠函數(shù)

    詳解Python中映射類(lèi)型的內(nèi)建函數(shù)和工廠函數(shù)

    這篇文章主要介紹了詳解Python中映射類(lèi)型的內(nèi)建函數(shù)和工廠函數(shù),目前Python的內(nèi)建映射類(lèi)型只有字典一種,需要的朋友可以參考下
    2015-08-08
  • Python unittest單元測(cè)試openpyxl實(shí)現(xiàn)過(guò)程解析

    Python unittest單元測(cè)試openpyxl實(shí)現(xiàn)過(guò)程解析

    這篇文章主要介紹了Python unittest單元測(cè)試openpyxl實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Python深拷貝與淺拷貝引用

    Python深拷貝與淺拷貝引用

    這篇文章主要介紹了Python深拷貝與淺拷貝引用,Python并沒(méi)有拷貝這個(gè)對(duì)象,而只是拷貝了這個(gè)對(duì)象的引用,下文具體的相關(guān)介紹需要的小伙伴可以參考一下
    2022-04-04
  • Python實(shí)現(xiàn)多子圖繪制系統(tǒng)的示例詳解

    Python實(shí)現(xiàn)多子圖繪制系統(tǒng)的示例詳解

    這篇文章主要介紹了如何利用python實(shí)現(xiàn)多子圖繪制系統(tǒng),文中的示例代碼講解詳細(xì),具有一定的的參考價(jià)值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-09-09

最新評(píng)論