本篇文章給大家分享的是有關(guān)Python中怎么使用函數(shù)的參數(shù)類(lèi)型,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話(huà)不多說(shuō),跟著小編一起來(lái)看看吧。
創(chuàng)新互聯(lián)是專(zhuān)業(yè)的榮成網(wǎng)站建設(shè)公司,榮成接單;提供成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專(zhuān)業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行榮成網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專(zhuān)業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專(zhuān)業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(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è)值(如果有的話(huà))強(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)好是攝影
以上就是Python中怎么使用函數(shù)的參數(shù)類(lèi)型,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。