国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

python學習筆記-函數(shù)的參數(shù)

jasperyang / 2630人閱讀

摘要:默認參數(shù)的坑默認參數(shù)的默認值指向的必需時不變對象。舉一個例說明當函數(shù)的默認參數(shù)默認為一個可變對象時,會出現(xiàn)什么狀況。例如調(diào)用函數(shù)輸出結(jié)果當然,如果已經(jīng)又一個對象,也可以在傳入時的名前輸入,會自動將拆分成關鍵字參數(shù)。

函數(shù)就像是一個黑盒子,我們將相關的一些功能打包成一個函數(shù),后續(xù)再調(diào)用的時候,我們不再關心內(nèi)部如何實現(xiàn),而是只關心這個函數(shù)需要輸入(Input)什么,需要輸出(Output)什么。 其中函數(shù)的輸入就是參數(shù),輸出就是Return。

Python支持的參數(shù)有四種類型:

必選參數(shù)

默認參數(shù)

可變參數(shù)

關鍵字參數(shù)
下面我們來一一介紹一下。

必選參數(shù)

必選參數(shù)就是調(diào)用一個函數(shù)時,必須輸入的參數(shù)。
例如我們定義一個函數(shù)

 def my_sum(x,y):
    return x+y

此時,my_sum函數(shù)的x,y參數(shù)就是必選參數(shù),在調(diào)用該函數(shù)時候必須輸入,不可以省略。

默認參數(shù)

默認參數(shù)是指在調(diào)用函數(shù)時可選擇性的輸入或者不輸入。不輸入時,則參數(shù)為默認值。例如我們定義一個用于打印學生信息的函數(shù)。學生的信息包括姓名、年齡、生源。這些學生大多數(shù)來自浙江省,那么這個函數(shù)可以這么定義:

def print_info(name,age=20,province="Zhejiang"):
    print name,age,province

對于大多數(shù)浙江的學生且年齡都是20,我們只需要這么調(diào)用函數(shù)即可:print_info("Lilei")。此時我們并沒有輸入province參數(shù),函數(shù)默認為年齡20,生源為Zhejiang

對于少數(shù)來自外省的學生,且年齡不為20的學生,我們可以這么按順序排列默認參數(shù),即先年齡,后生源,順序與函數(shù)定義的時候一致:
print_info("Lucy",21,"Jiangsu")。此時province就修改成Jiangsu了。

如果需要跳過某個默認參數(shù)或則不按順序傳入默認參數(shù),我們則需要寫上參數(shù)名。例如:print_info("Tom",province="Hebei")。

使用默認參數(shù)可以大大降低函數(shù)調(diào)用的復雜性。例如對于有很多參數(shù)的函數(shù),某些參數(shù)在實際業(yè)務中經(jīng)常變化,有些參數(shù)缺較少變化。我們可以將這些參數(shù)按其在實際業(yè)務中的變化頻率從高到底排列,并對變化頻率低的參數(shù)設為默認參數(shù)。實際調(diào)用時,我們只需要傳入必要的參數(shù)值即可。這樣我們可以實現(xiàn)只定義一個函數(shù)卻能滿足多種情境。

默認參數(shù)的坑

默認參數(shù)的默認值指向的必需時不變對象。
舉一個例說明當函數(shù)的默認參數(shù)默認為一個可變對象時,會出現(xiàn)什么狀況。

def add_item(items=[]):
    items.append("apple")
    return items

我們想要實現(xiàn)的功能是,調(diào)用該函數(shù),會對傳入的list最后添加一個apple元素。若 `items`參數(shù)未傳入,則默認是一個空list。

當我們第一次調(diào)用add_item()函數(shù)時,返回["apple"],沒什么錯誤。

但我們再一次調(diào)用add_item()函數(shù)時,卻返回了`["apple","apple"]。這與我們預期的不相符合。因為我們第二次調(diào)用也未傳入任何參數(shù)。

其原因是add_item()函數(shù)的默認參數(shù)在函數(shù)定義的時候就已經(jīng)在內(nèi)存生成。第一次、第二次的默認參數(shù)指向的是同一個list對象。其一次調(diào)用函數(shù)對該list對象的修改會影響后一次函數(shù)的調(diào)用。

可變參數(shù)

在實際情況下,我們經(jīng)常會碰到某函數(shù)的參數(shù)個數(shù)不一定的情況。例如我們想要寫一個計算幾個數(shù)字的平方和的函數(shù)。
當然我們可以預先將這些數(shù)字組裝成一個list或者tuple再傳入函數(shù)。代碼如下:

# 定義函數(shù)
def quadratic_sum(numbers):
    sum = 0
    for number in numbers:
        sum = sum + number
    return sum    

# 先將數(shù)字組成一個list
ns = [1,3,2,6,2]
# 將list傳入函數(shù)
quadratic_sum(ns)    

在Python中,我們可以直接定義一個有可變參數(shù)的函數(shù),我們無需預先組裝一個list或者tuple,而直接傳入函數(shù)??勺儏?shù)的表示方法是在參數(shù)名前加一個*
傳入的可變參數(shù)會被Python組裝成一個tuple,tuple名即為函數(shù)定義的可變參數(shù)名。

# 定義一個有可變參數(shù)的函數(shù)
def quadratic_sum(*numbers):
    sum = 0
    for number in numbers:
        sum = sum + number
    return sum
# 直接調(diào)用函數(shù),無需預先組裝成一個list或者tuple。
quadratic_sum(1,3,2,6,2)

此時我們已經(jīng)有了一個支持可變參數(shù)的函數(shù),但是我們現(xiàn)在又有一個list比如[1,3,2,6,2]。我們還需要把這個list一個拆成一個數(shù)字傳入函數(shù)嗎?顯然這么做不科學。
Python提供了一個簡單的解決方案。我們只需要在傳入的list名前加一個*,Python就會幫我們把這個list或tuple拆成可變參數(shù)傳入。例如:

ns = [1,2,3,54,2]
quadratic_sum(*ns)
關鍵字參數(shù)

關鍵字參數(shù)于可變參數(shù)類似。關鍵字參數(shù)可以將傳入的參數(shù)組裝成一個字典Dict。
定義一個關鍵字參數(shù)的方法就是在關鍵字參數(shù)前寫**。例如

def user_info(name,age,**kw):
    print "Name:",name,"Age:",age,"Keyword:",kw
# 調(diào)用函數(shù)
user_info("Charlie",20,gender="male",city="Hangzhou")

輸出結(jié)果:
Name: Chalrie Age: 20 Keyword: {"gender": "male", "city": "Hanzhou"}

當然,如果已經(jīng)又一個dict對象,也可以在傳入時的dict名前輸入**,Python會自動將Dict拆分成關鍵字參數(shù)。

keyword = {"gender": "male", "city": "Hanzhou"}
user_info("charlie",20,**keyword)
參數(shù)組合

Python函數(shù)的參數(shù)可以是上述四種參數(shù)的任意組合,但是其順序必須是必選參數(shù)、默認參數(shù)、可變參數(shù)、關鍵字參數(shù)。Python會根據(jù)這個順序進行匹配。例如我們定義一個函數(shù):

def func(name,age=20,gender="female",*args,**kw):
    print "age:",age
    print "name:",name
    print args
    print kw

上面這個函數(shù),name是必選參數(shù)。調(diào)用該函數(shù)時若沒有傳入name參數(shù),則會報錯。
age,gender是默認函數(shù)。可以傳入也可以不傳入。不傳入則是默認值。
其余無關鍵字的參數(shù)會被組裝成一個叫argstuple。
其余有關鍵字的參數(shù)會被組裝成一個叫kw的dict。
例如:
func("Charlie",gender="male",2,3,4,city="hangzhou",province="Zhejiang")

關于更多參數(shù)類型的內(nèi)容,可以閱讀一篇文章:
http://www.qiangtaoli.com/boo...

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/44249.html

相關文章

  • python學習筆記-調(diào)用函數(shù)

    摘要:調(diào)用函數(shù)時常見的錯誤函數(shù)參數(shù)個數(shù)不正確會給我們返回,并給出確切的錯誤信息。例如將變量名指向這個取整函數(shù)調(diào)用函數(shù),即調(diào)用這個取整數(shù)的函數(shù) python有許多內(nèi)置的函數(shù)(Build-in Functions)例如abs()——求絕對值的函數(shù)供我們使用。那么我們?nèi)绾握{(diào)用這些函數(shù)呢?直接書寫函數(shù)名帶括號并在括號內(nèi)傳入?yún)?shù)即可。例如abs(-10.2)即可。python內(nèi)置的函數(shù)可以到https...

    AZmake 評論0 收藏0
  • python學習筆記 函數(shù)

    摘要:一等函數(shù)在中,函數(shù)是一等對象。匿名函數(shù)關鍵字在表達式內(nèi)創(chuàng)建匿名函數(shù)然而,簡單的句法限制了函數(shù)的定義體只能使用純表達式,即函數(shù)的定義體中不能賦值,不能使用等語句。匿名函數(shù)適合用于作為函數(shù)的參數(shù) 一等函數(shù) 在python中,函數(shù)是一等對象。編程語言理論家把一等對象定義為滿足以下條件的程序?qū)嶓w: 在運行時創(chuàng)建 能賦值給變量或數(shù)據(jù)結(jié)構(gòu)中的元素 能作為參數(shù)傳給函數(shù) 能作為函數(shù)的返回結(jié)果 在p...

    Scorpion 評論0 收藏0
  • python學習筆記-定義函數(shù)

    摘要:空函數(shù)如果想要定義一個什么都不做的函數(shù),那么可以用語句。為函數(shù)添加參數(shù)檢查我們對作一些改寫。此時調(diào)用函數(shù)時傳入錯誤的參數(shù)則會拋出。函數(shù)返回多個值支持返回多個值。 python中定義函數(shù)的關鍵詞是def,例如定義一個叫my_function的函數(shù)我們可以這么定義, 其中括號內(nèi)的x,y為傳入的參數(shù)。 def my_function(): # function body 返回值 函數(shù)...

    CoderStudy 評論0 收藏0
  • python學習筆記-map/reduce/filter/sorted

    摘要:會依次將中的數(shù)據(jù)傳遞到中,根據(jù)返回的或者,留下或者拋棄這個值。而對于字符串,則是根據(jù)字符串對應的碼表進行排序。同時也是一個高階函數(shù),可以實現(xiàn)自定義的排序方式。 map/reduce是一種編程思想,在各個領域都有它的實踐。網(wǎng)上有一個簡單的例子解釋map/reduce。比如說你需要數(shù)一下某一個圖書館中有多少本藏書。最傻瓜的做法就是排一個人從頭數(shù)到尾。這樣速度慢,低效。另一種方法就是先將圖書...

    用戶83 評論0 收藏0
  • python-學習筆記 內(nèi)部函數(shù)

    摘要:返回該函數(shù)的時候,攜帶了該內(nèi)部函數(shù)引用的外部函數(shù)參數(shù)和局部變量。每次返回的函數(shù)都是不同的對象的結(jié)果為內(nèi)部函數(shù)本身被返回時,所攜帶的參數(shù)或局部變量時那一刻的值例如在函數(shù)內(nèi)有循環(huán),內(nèi)部函數(shù)引用的循環(huán)變量。 內(nèi)部函數(shù) Python可以在函數(shù)內(nèi)部再定義一個函數(shù)。這個定義的內(nèi)部函數(shù)可以引用外部函數(shù)的參數(shù)和局部變量。事實上,內(nèi)部函數(shù)還可以在其中再定義內(nèi)部函數(shù),實現(xiàn)內(nèi)部函數(shù)多重嵌套。例如: def ...

    Gilbertat 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<