乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      5步教你搞清函數(shù)參數(shù)傳遞,就這么簡單

       Four兄 2019-08-24

      這是菜鳥學(xué)python的第22篇原創(chuàng)文章

      閱讀本文大概需要5分鐘

      前面講了函數(shù)里面的作用域,今天我們來講python函數(shù)的參數(shù)傳遞,參數(shù)傳遞用法非常靈活(同時(shí)也混淆弄錯(cuò)),我們來剖析一下Python里面的參數(shù)傳遞長什么樣子,以及為啥長成這個(gè)樣子,到底有什么奧妙在里面

      語言是相同的,相信有其他編程語言功力的同學(xué)比如java,c++,perl這些函數(shù)里面也有類似的設(shè)計(jì).Python里面對(duì)函數(shù)參數(shù)傳遞分以下幾種:

      • 位置參數(shù)

      • 默認(rèn)參數(shù)  #在函數(shù)運(yùn)行前參數(shù)就被賦了值

      • 關(guān)鍵字參數(shù) #通過變量名字進(jìn)行匹配,而不是通過位置

      • 可變長度參數(shù)

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

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

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

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

      1.位置參數(shù)

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


      把'Hi Python'賦給message,2賦給times

      2.默認(rèn)參數(shù)

      一般我們調(diào)用函數(shù)的時(shí)候都會(huì)傳入值,但是懶人有的時(shí)候,希望我輸入了值就用我的,我懶的時(shí)候不輸入了python也能給我一個(gè)默認(rèn)值,這就用到了默認(rèn)參數(shù)的特性,看個(gè)例子吧:

      def printMessage(message,times=2):

      print (message*times)

      printMessage('Hi Python:')#沒有輸入times的值

      >>Hi Python:Hi Python:

      看我們很懶,沒有輸入times的值,python就會(huì)自動(dòng)用times的默認(rèn)值2,是不是很爽

      • 其實(shí)這個(gè)特性對(duì)我們開發(fā)產(chǎn)品的時(shí)候非常有幫助,有的時(shí)候一個(gè)函數(shù)有很多參數(shù),但是為了給用戶比較好的體驗(yàn)和方便,我們給函數(shù)提供了一套默認(rèn)的參數(shù),這樣對(duì)用戶來說很爽。

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

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

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


      接著說難點(diǎn)的:關(guān)于任意數(shù)量參數(shù)

      先看一個(gè)打印分?jǐn)?shù)的函數(shù),這個(gè)函數(shù)設(shè)計(jì)的比較死板,看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',[])#那怕你不想輸入分?jǐn)?shù),也必須輸入一個(gè)空的列表

      >>My scores are

      • 大家仔細(xì)看這個(gè)打印log的函數(shù),它一個(gè)固定參數(shù)個(gè)數(shù)的函數(shù),這個(gè)函數(shù)接受兩個(gè)參數(shù):一個(gè)message,一個(gè)values。

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

      • 這種寫法既麻煩,又顯的有點(diǎn)亂,有沒有辦法把第二個(gè)參數(shù)完全省略掉有的,python設(shè)計(jì)者設(shè)計(jì)了可變函數(shù)參數(shù)功能,也就是我們的第4種方式

      4.任意多個(gè)位置參數(shù)的函數(shù)

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

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

      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ù)量,我們加多個(gè)參數(shù)試試看:

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

      >>My scores are,100, 90, 80

      一下把100,90,80都打印出來呢,是怎么做到的,是因?yàn)閜ython會(huì)自動(dòng)把*操作符后面的形參變成元組傳給函數(shù).

      5.任意多個(gè)關(guān)鍵字形式的參數(shù)

      python有兩種方式聲明可變參數(shù),我們接著說第二種:如何能接受任意數(shù)量的關(guān)鍵字參數(shù),是用**雙星號(hào)操作符來表示


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

      綜合例子:

      好最后拿一個(gè)綜合例子結(jié)尾:(包含了關(guān)鍵字參數(shù),默認(rèn)參數(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


      好了函數(shù)里的參數(shù)傳遞就講到這里啦,希望能給初學(xué)者一些啟發(fā),若有什么不懂的,也可以留言跟我探討交流.

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請遵守用戶 評(píng)論公約

        類似文章 更多