亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python中函數(shù)的參數(shù)定義和可變參數(shù)用法實例分析

 更新時間:2015年06月04日 12:08:21   作者:tqsummer  
這篇文章主要介紹了Python中函數(shù)的參數(shù)定義和可變參數(shù)用法,以實例形式較為詳細的分析了Python中參數(shù)定義與可變參數(shù)的具體使用方法,需要的朋友可以參考下

本文實例講述了Python中函數(shù)的參數(shù)定義和可變參數(shù)用法。分享給大家供大家參考。具體如下:

剛學(xué)用Python的時候,特別是看一些庫的源碼時,經(jīng)常會看到func(*args, **kwargs)這樣的函數(shù)定義,這個*和**讓人有點費解。其實只要把函數(shù)參數(shù)定義搞清楚了,就不難理解了。

先說說函數(shù)定義,我們都知道,下面的代碼定義了一個函數(shù)funcA

def funcA():
 pass

顯然,函數(shù)funcA沒有參數(shù)(同時啥也不干:D)。

下面這個函數(shù)funcB就有兩個參數(shù)了,

def funcB(a, b):
 print a
 print b

調(diào)用的時候,我們需要使用函數(shù)名,加上圓括號擴起來的參數(shù)列表,比如 funcB(100, 99),執(zhí)行結(jié)果是:

100
99

很明顯,參數(shù)的順序和個數(shù)要和函數(shù)定義中一致,如果執(zhí)行funcB(100),Python會報錯的:

TypeError: funcB() takes exactly 2 arguments (1 given)

我們可以在函數(shù)定義中使用參數(shù)默認值,比如

def funcC(a, b=0):
 print a
 print b

在函數(shù)funcC的定義中,參數(shù)b有默認值,是一個可選參數(shù),如果我們調(diào)用funcC(100),b會自動賦值為0。

OK,目前為止,我們要定義一個函數(shù)的時候,必須要預(yù)先定義這個函數(shù)需要多少個參數(shù)(或者說可以接受多少個參數(shù))。一般情況下這是沒問題的,但是也有在定義函數(shù)的時候,不能知道參數(shù)個數(shù)的情況(想一想C語言里的printf函數(shù)),在Python里,帶*的參數(shù)就是用來接受可變數(shù)量參數(shù)的??匆粋€例子

def funcD(a, b, *c):
 print a
 print b
 print "length of c is: %d " % len(c)
 print c

調(diào)用funcD(1, 2, 3, 4, 5, 6)結(jié)果是

1
2
length of c is: 4
(3, 4, 5, 6)

我們看到,前面兩個參數(shù)被a、b接受了,剩下的4個參數(shù),全部被c接受了,c在這里是一個tuple。我們在調(diào)用funcD的時候,至少要傳遞2個參數(shù),2個以上的參數(shù),都放到c里了,如果只有兩個參數(shù),那么c就是一個empty tuple。

好了,一顆星我們弄清楚了,下面輪到兩顆星。

上面的例子里,調(diào)用函數(shù)的時候,傳遞的參數(shù)都是根據(jù)位置來跟函數(shù)定義里的參數(shù)表匹配的,比如funcB(100, 99)和funcB(99, 100)的執(zhí)行結(jié)果是不一樣的。在Python里,還支持一種用關(guān)鍵字參數(shù)(keyword argument)調(diào)用函數(shù)的辦法,也就是在調(diào)用函數(shù)的時候,明確指定參數(shù)值付給那個形參。比如還是上面的funcB(a, b),我們通過這兩種方式調(diào)用
funcB(a=100, b=99)

funcB(b=99, a=100)

結(jié)果跟funcB(100, 99)都是一樣的,因為我們在使用關(guān)鍵字參數(shù)調(diào)用的時候,指定了把100賦值給a,99賦值給b。也就是說,關(guān)鍵字參數(shù)可以讓我們在調(diào)用函數(shù)的時候打亂參數(shù)傳遞的順序!

另外,在函數(shù)調(diào)用中,可以混合使用基于位置匹配的參數(shù)和關(guān)鍵字參數(shù),前題是先給出固定位置的參數(shù),比如

def funcE(a, b, c):
 print a
 print b
 print c

調(diào)用funcE(100, 99, 98)和調(diào)用funcE(100, c=98, b=99)的結(jié)果是一樣的。

好了,經(jīng)過以上鋪墊,兩顆星總算可以出場了:
如果一個函數(shù)定義中的最后一個形參有 ** (雙星號)前綴,所有正常形參之外的其他的關(guān)鍵字參數(shù)都將被放置在一個字典中傳遞給函數(shù),比如:

def funcF(a, **b):
 print a
 for x in b:
  print x + ": " + str(b[x])

調(diào)用funcF(100, c='你好', b=200),執(zhí)行結(jié)果

100
c: 你好
b: 200

大家可以看到,b是一個dict對象實例,它接受了關(guān)鍵字參數(shù)b和c。

常規(guī)參數(shù),*參數(shù)及**參數(shù)可以同時使用,具體怎么用?看看Python Reference Manual吧,關(guān)于Function definitions的那些章節(jié)。其實,笨想也能猜出來啊,o(∩_∩)o...

希望本文所述對大家的Python程序設(shè)計有所幫助。

相關(guān)文章

  • Python實戰(zhàn)項目之MySQL tkinter pyinstaller實現(xiàn)學(xué)生管理系統(tǒng)

    Python實戰(zhàn)項目之MySQL tkinter pyinstaller實現(xiàn)學(xué)生管理系統(tǒng)

    讀萬卷書不如行萬里路,只學(xué)書上的理論是遠遠不夠的,只有在實戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用MySQL、tkinter、 pyinstaller實現(xiàn)一個學(xué)生管理系統(tǒng),大家可以通過案例查缺補漏,提升水平
    2021-10-10
  • 淺談Python numpy創(chuàng)建空數(shù)組的問題

    淺談Python numpy創(chuàng)建空數(shù)組的問題

    今天遇到一個小小的問題,是關(guān)于numpy創(chuàng)建空數(shù)組,今天特地整理了這篇文章,文中作出了非常詳細的介紹,對正在學(xué)習(xí)python的小伙伴們有很好的幫助,需要的朋友可以參考下
    2021-05-05
  • Python解決八皇后問題示例

    Python解決八皇后問題示例

    這篇文章主要介紹了Python解決八皇后問題,簡單描述了八皇后問題的原理并結(jié)合實例形式分析了Python基于遞歸算法解決八皇后問題的相關(guān)操作技巧,需要的朋友可以參考下
    2018-04-04
  • 詳解python的內(nèi)存分配機制

    詳解python的內(nèi)存分配機制

    Python的內(nèi)存分配機制是小白們最需要理解的概念之一。創(chuàng)建對象(變量、函數(shù)、對象等)后,CPython會在內(nèi)存中為其分配地址。Python有一個id()函數(shù),它可以返回對象的“身份”,也就是內(nèi)存地址。它實際上是一個唯一的整數(shù)。
    2021-05-05
  • Python安裝pycurl失敗的解決方法

    Python安裝pycurl失敗的解決方法

    今天小編就為大家分享一篇Python安裝pycurl失敗的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • 用python制作詞云視頻詳解

    用python制作詞云視頻詳解

    這篇文章主要介紹了用python制作詞云視頻詳解,原理解釋清晰,代碼詳細,用于練習(xí)很適合,需要的朋友可以參考下
    2021-04-04
  • Python+Matplotlib實現(xiàn)給圖像添加文本標(biāo)簽與注釋

    Python+Matplotlib實現(xiàn)給圖像添加文本標(biāo)簽與注釋

    這篇文章主要為大家分享一下如何使用python+matplotlib給繪制的圖像添加文本標(biāo)簽與注釋。文中的示例代碼講解詳細,感興趣的可以了解一下
    2022-04-04
  • 淺談django orm 優(yōu)化

    淺談django orm 優(yōu)化

    這篇文章主要介紹了淺談django orm 優(yōu)化,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • Django3.2 自動發(fā)現(xiàn)所有路由代碼詳解

    Django3.2 自動發(fā)現(xiàn)所有路由代碼詳解

    這篇文章主要為大家介紹了Django自動發(fā)現(xiàn)所有路由的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • Python將多個圖像合并輸出的實現(xiàn)方法

    Python將多個圖像合并輸出的實現(xiàn)方法

    這篇文章主要介紹了Python將多個圖像合并輸出的實現(xiàn)方法,本文介紹了兩種將多個圖像合并為一個輸出的方法:使用PIL庫或使用OpenCV和NumPy,這些庫都可以使用Python中的簡單語法和少量的代碼來完成此任務(wù),需要的朋友可以參考下
    2023-06-06

最新評論