<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Python函數(shù)的參數(shù)類型和使用技巧

          共 3432字,需瀏覽 7分鐘

           ·

          2021-04-03 22:18

          ↑↑↑關(guān)注后"星標(biāo)"簡(jiǎn)說(shuō)Python

          人人都可以簡(jiǎn)單入門Python、爬蟲(chóng)、數(shù)據(jù)分析
           簡(jiǎn)說(shuō)Python推薦 
          來(lái)源:Python作業(yè)輔導(dǎo)員
          作者:天元浪子
          大家好,我是老表,今天聊聊函數(shù)參數(shù)類型和使用技巧。
          先來(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.7575'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ù)就有了兩種類型的參數(shù):weight和height,它們是函數(shù)調(diào)用時(shí)必不可少的參數(shù),且順序必須與函數(shù)定義的保持一致,這樣的參數(shù)稱為位置參數(shù);name是函數(shù)調(diào)用時(shí)可有可無(wú)的參數(shù)(如未提供,則使用默認(rèn)值),這樣的參數(shù)稱為默認(rèn)參數(shù)。默認(rèn)參數(shù)可以有多個(gè)。
          為了使結(jié)果更準(zhǔn)確,可以考慮使用最近一段時(shí)期內(nèi)多個(gè)體重的均值來(lái)計(jì)算體重指數(shù),這就意味著需要輸入多個(gè)體重值。我們固然可以一個(gè)體重的元組或列表傳給weight,但這樣weight和height就不是同一種類型了,在形式上失去了美感,在使用時(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.7575, name='xufive')
          xufive的體重指數(shù)為24.5
          >>> bmi(1.757574)
          您的體重指數(shù)為24.3
          >>> bmi(1.75757475.574.7, name='xufive')
          xufive的體重指數(shù)為24.4
          實(shí)際上,像下面這樣調(diào)用函數(shù)也沒(méi)有問(wèn)題。
          >>> weight = [757475.574.7]
          >>> bmi(1.75, *weight, name='xufive')
          xufive的體重指數(shù)為24.4
          這下就有點(diǎn)復(fù)雜了,bmi函數(shù)有了三種類型的參數(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)題:三種類型的參數(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ù)雜的情況。除了上面介紹的三種類型的參數(shù)外,Python函數(shù)還支持第四種類型的參數(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.75757475.574.7, name='Xufive')
          Xufive的體重指數(shù)為24.4
          >>> bmi(1.757574, name='Xufive', 性別='男', 愛(ài)好='攝影')
          Xufive的體重指數(shù)為24.3
          Xufive的性別是男
          Xufive的愛(ài)好是攝影
          >>> bmi(1.757574, 性別='男', 愛(ài)好='攝影', name='Xufive')
          Xufive的體重指數(shù)為24.3
          Xufive的性別是男
          Xufive的愛(ài)好是攝影
          >>> bmi(1.75757475.574.7, 性別='男', 愛(ài)好='攝影')
          您的體重指數(shù)為24.4
          您的性別是男
          您的愛(ài)好是攝影
          如果一個(gè)函數(shù)同時(shí)具備了上述四種類型的參數(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ù)之前,也可以在其后,也可以混雜其中。

          -END-

          掃下方二維碼添加我的私人微信,可以在我的朋友圈獲取最新的Python學(xué)習(xí)資料,以及近期推文中的源碼或者其他資源,另外不定期開(kāi)放學(xué)習(xí)交流群,以及朋友圈福利(送書(shū)、紅包、學(xué)習(xí)資源等)。

          掃碼查看我朋友圈

          獲取最新學(xué)習(xí)資源

          學(xué)習(xí)更多:
          整理了我開(kāi)始分享學(xué)習(xí)筆記到現(xiàn)在超過(guò)250篇優(yōu)質(zhì)文章,涵蓋數(shù)據(jù)分析、爬蟲(chóng)、機(jī)器學(xué)習(xí)等方面,別再說(shuō)不知道該從哪開(kāi)始,實(shí)戰(zhàn)哪里找了

          點(diǎn)贊”傳統(tǒng)美德不能丟 

          瀏覽 60
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  台湾成人综合 | 在线免费观看成人网站 | 手机在线看片av 亚洲成人黄色网址 | 91成人免费 | 先锋影音色色 |