开心六月综合激情婷婷|欧美精品成人动漫二区|国产中文字幕综合色|亚洲人在线成视频

    1. 
      
        <b id="zqfy3"><legend id="zqfy3"><fieldset id="zqfy3"></fieldset></legend></b>
          <ul id="zqfy3"></ul>
          <blockquote id="zqfy3"><strong id="zqfy3"><dfn id="zqfy3"></dfn></strong></blockquote>
          <blockquote id="zqfy3"><legend id="zqfy3"></legend></blockquote>
          打開APP
          userphoto
          未登錄

          開通VIP,暢享免費電子書等14項超值服

          開通VIP
          函數(shù)參數(shù)傳遞

          Python里面對函數(shù)參數(shù)傳遞分以下幾種:

          • 位置參數(shù)
          • 默認參數(shù)   #在函數(shù)運行前參數(shù)就被賦了值
          • 關(guān)鍵字參數(shù)  #通過變量名字進行匹配,而不是通過位置
          • 可變長度參數(shù)

          1)任意多個非關(guān)鍵字可變長參數(shù)(元組)

          2)任意多個關(guān)鍵字變量參數(shù)(字典)

          有同學(xué)說怎么這么麻煩啊,這跟我們生活中的很多產(chǎn)品類似,比如相機的傻瓜模式和專家模式,汽車里面的自動檔和手動擋,大同小異python有這么多參數(shù)的傳遞方式,其實主要了為了軟件設(shè)計的靈活和功能的擴展。

          我先從最簡單的開始介紹:

          1.位置參數(shù)

          python中最普通的函數(shù)使用是這種帶位置參數(shù)的函數(shù),這跟我們其他語言的普通的函數(shù)是一樣的,所有參數(shù)在傳遞的時候按照位置來傳遞,列如:

          def printmessage(message,times):
          print(message*times)

          printmessage('hi python:',2) #把“hi python:”賦值給message,2賦值給times

          >>># 打印結(jié)果
          hi python:hi python:

          2.默認參數(shù)

          一般我們調(diào)用函數(shù)的時候都會傳入值,但是有些人比較懶(比如我),希望輸入了值就用我的,那么這個時候我就希望不輸入,python也能給我一個默認值,這就用到了默認參數(shù)的特性,舉個栗子,劈個叉吧:

          def printMessage(message,times=2):
          print (message*times)

          printMessage('Hi Python:') #沒有輸入times的值
          >> #打印結(jié)果
          Hi Python:Hi Python:

          看我們很懶,沒有輸入times的值,python就會自動用times的默認值2,是不是很爽,你可能以為這有啥了不起的,我一個一個輸也行,但是你要考慮一些場景,比如你現(xiàn)在寫一個函數(shù),里面有十幾個參數(shù),其中有一些參數(shù)是固定的,那是不是可以用默認參數(shù)一次性搞定啦~

          或者換個場景,在我們開發(fā)產(chǎn)品的時候,一個函數(shù)如果有很多參數(shù),但是為了給用戶比較好的體驗和方便,我們給函數(shù)提供了一套默認的參數(shù),這樣對用戶來說很爽。

          當用戶慢慢的對你的產(chǎn)品熟悉了,他希望自己調(diào)整參數(shù),就可以直接去設(shè)參數(shù),其實跟照相機里面的自動模式和手調(diào)模式一個道理。

          3.關(guān)鍵字參數(shù)

          在調(diào)用函數(shù)的時候,我們希望傳遞的參數(shù)不是僵硬的通過位置來傳遞,能夠有一定的靈活性,能通過變量名進行匹配.

          def func(a, b=10, c=20):
          print('a is:',a, 'b is:',b, 'c is:',c)
          func(3,7) #沒有關(guān)鍵字就用默認的位置傳遞
          >>>a is: 3 b is: 7 c is: 20

          func(25,c=24) #可以跳過b,直接賦值給c
          >>>a is: 25 b is: 10 c is: 24

          func(c=50,a=100) # 用關(guān)鍵字特別爽,想怎么玩就怎么玩,只要你開心
          >>>a is: 100 b is: 10 c is: 50

          4、任意數(shù)量參數(shù)

          任意數(shù)量參數(shù)是python關(guān)于函數(shù)參數(shù)傳遞較難的。

          先看一個打印分數(shù)的函數(shù),這個函數(shù)設(shè)計的比較死板,看python是如何解決的,然后引出我們的話題

          def printScore(msg,values):
              if not values:
                  print(msg)
              else:
                  values_str=', '.join(str(x)for x in values)
                  print ('{},{}'.format(msg,values_str))

          printScore('My scores are',[100,90])
          >>My scores are,100, 90

          printScore('My scores are',[ ]) #那怕你不想輸入分數(shù),也必須輸入一個空的列表
          >>My scores are

          大家仔細看這個函數(shù),它是一個固定參數(shù)個數(shù)的函數(shù),這個函數(shù)接受兩個參數(shù):一個message,一個values。

          準確的說是必須要接受兩個參數(shù),這樣就很死板,比如我只需要打印一個消息,但是調(diào)用的必須要和上面一樣,哪怕你傳入的是一個空列表。

          這種寫法既麻煩,又顯的有點亂,有沒有辦法把第二個參數(shù)完全省略掉.。有的,python設(shè)計者(看下圖,就是這哥們,以下鏈接是這個人的簡介:https://zh.wikipedia.org/wiki/%E5%90%89%E5%A4%9A%C2%B7%E8%8C%83%E7%BD%97%E8%8B%8F%E5%A7%86設(shè)計了可變函數(shù)參數(shù)功能,也就是我們的第4種方式。

          (1)python有兩種方式聲明可變參數(shù),我們先說第一種:

          在printScore函數(shù)中,我們做一小丟丟的改動,我們在參數(shù)values前面加*,變成(msg,*values),表示只有第一個參數(shù)的msg是調(diào)用者必須要指定的,該參數(shù)后面,可以跟任意數(shù)量的位置參數(shù)(主要是任意數(shù)量,當然包含懶人專用的省略不寫啦)

          def printScore(msg,*values):
          if not values:
          print (msg)
          else:
          values_str=', '.join(str(x)for x in values)
          print ('{},{}'.format(msg,values_str))

          printScore('My scores are')
          >>My scores are

          是不是很爽,剛才說任意數(shù)量,我們加多個參數(shù)試試看:

          printScore('My scores are',100,90,80)
          >>My scores are,100, 90, 80

          一下把100,90,80都打印出來呢,是怎么做到的,是因為python會自動把*操作符后面的形參變成元組傳給函數(shù),是一個元組哦~

          (2)我們接著說第二種:如何能接受任意數(shù)量的關(guān)鍵字參數(shù),是用**雙星號操作符來表示

          def printlog(msg,**therest):
          if not therest:
          print(msg)
          else:
          for key,value in therest.items():
          print('{},{} = {}'.format(msg,key,value))
          printlog('log info',version = '1.0',platfrom = 'win')

          >>>
          log info,versions = 1.0
          log info,platfrom = win

          其實就是把**后面的變量參數(shù),按照字典來處理,傳遞給函數(shù).

          綜合例子:

          好,最后拿一個綜合例子結(jié)尾:(包含了關(guān)鍵字參數(shù),默認參數(shù),可變?nèi)我鈹?shù)量參數(shù))

          def total(initial=5,*numbers,**keywords):
          count=initial
          for number in numbers:
          count =number

          for key in keywords:
          count =keywords.get(key)
          return count

          print total(10,1,2,3,apple=50,orange=100)
          >>166
          本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
          打開APP,閱讀全文并永久保存 查看更多類似文章
          猜你喜歡
          類似文章
          5步教你搞清函數(shù)參數(shù)傳遞,就這么簡單
          一日一技:Python中的* args和** kwargs參數(shù)
          給妹子講python-S01E21函數(shù)參數(shù)的匹配與解包
          教你寫出可讀性高的Python代碼
          python再談函數(shù)
          python基礎(chǔ)篇:什么是函數(shù)?函數(shù)有什么用?
          更多類似文章 >>
          生活服務(wù)
          分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
          綁定賬號成功
          后續(xù)可登錄賬號暢享VIP特權(quán)!
          如果VIP功能使用有故障,
          可點擊這里聯(lián)系客服!

          聯(lián)系客服