您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關Python中怎么使用函數的參數類型,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
先來定義一個計算體重指數(BMI)的函數。體重指數就是體重與身高的平方之比,其中體重以千克為單位,身高以米為單位。
>>> def bmi(height, weight, name): i = weight/height**2 print('%s的體重指數為%0.1f'%(name, i)) >>> bmi(1.75, 75, 'Xufive') Xufive的體重指數為24.5
自定義函數bmi有三個參數,每個參數都有明確的含義。調用這個函數時,必須按照定義的順序傳入這三個參數,缺一不可。這也是Python函數最基本的參數傳遞規則。
接下來把bmi函數稍微改造一下,給name參數指定一個默認值。
>>> def bmi(height, weight, name='您'): i = weight/height**2 print('%s的體重指數為%0.1f'%(name, i)) >>> bmi(1.75,75) # 可以不傳遞name參數,使用默認值 您的體重指數為24.5 >>> bmi(1.75,75,'Xufive') # 也可以傳遞name參數 Xufive的體重指數為24.5
現在bmi函數就有了兩種類型的參數:weight和height,它們是函數調用時必不可少的參數,且順序必須與函數定義的保持一致,這樣的參數稱為位置參數;name是函數調用時可有可無的參數(如未提供,則使用默認值),這樣的參數稱為默認參數。默認參數可以有多個。
為了使結果更準確,可以考慮使用最近一段時期內多個體重的均值來計算體重指數,這就意味著需要輸入多個體重值。我們固然可以一個體重的元組或列表傳給weight,但這樣weight和height就不是同一種類型了,在形式上失去了美感,在使用時也容易產生誤會。最好的方式就是讓函數可以接受不確定個數的體重參數。
>>> def bmi(height, *args, name='您'): i = (sum(args)/len(args))/height**2 print('%s的體重指數為%0.1f'%(name, i)) >>> bmi(1.75, 75, name='xufive') xufive的體重指數為24.5 >>> bmi(1.75, 75, 74) 您的體重指數為24.3 >>> bmi(1.75, 75, 74, 75.5, 74.7, name='xufive') xufive的體重指數為24.4
實際上,像下面這樣調用函數也沒有問題。
>>> weight = [75, 74, 75.5, 74.7] >>> bmi(1.75, *weight, name='xufive') xufive的體重指數為24.4
這下就有點復雜了,bmi函數有了三種類型的參數。除了位置參數和默認參數,又多了一種可變參數,即bmi函數可以接受不限數量的參數。在函數定義時,可變參數名前面冠以“*”號;在函數體內,可變參數相當于一個元組。
如此一來,就產生了一個新的問題:三種類型的參數應該以怎樣的順序被定義呢?位置參數排在首位,這一點沒有異議。默認參數原則上放在最后,但調用時必須加上參數名(如上面的例子),否則函數無法區分究竟是可變參數還是默認參數。默認參數也可以放在可變參數之前(不建議這樣做),但調用時不能使用參數名,即便使用默認值也不能省略參數,否則函數會用后面的可變參數的第一個值(如果有的話)強制為其賦值。
下面說一說更復雜的情況。除了上面介紹的三種類型的參數外,Python函數還支持第四種類型的參數:關鍵字參數。關鍵字參數由不限數量的鍵值對組成。在函數定義時,關鍵字參數名前面冠以“**”號;在函數體內,關鍵字參數相當于一個字典。
>>> def bmi(height, *args, name='您', **kwds): i = (sum(args)/len(args))/height**2 print('%s的體重指數為%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的體重指數為24.4 >>> bmi(1.75, 75, 74, name='Xufive', 性別='男', 愛好='攝影') Xufive的體重指數為24.3 Xufive的性別是男 Xufive的愛好是攝影 >>> bmi(1.75, 75, 74, 性別='男', 愛好='攝影', name='Xufive') Xufive的體重指數為24.3 Xufive的性別是男 Xufive的愛好是攝影 >>> bmi(1.75, 75, 74, 75.5, 74.7, 性別='男', 愛好='攝影') 您的體重指數為24.4 您的性別是男 您的愛好是攝影
以上就是Python中怎么使用函數的參數類型,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。