欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Python函數(shù)參數(shù)詳解-創(chuàng)新互聯(lián)

  Python函數(shù)定義時參數(shù)靈活,使用不同參數(shù)的組合不僅可以簡化調(diào)用者的代碼,還可以處理復雜的參數(shù)。
函數(shù)的參數(shù)除了有必選參數(shù)外,還可以使用默認參數(shù),可變參數(shù),關鍵字參數(shù)和命名關鍵字參數(shù)。

創(chuàng)新互聯(lián)公司主營穆棱網(wǎng)站建設的網(wǎng)絡公司,主營網(wǎng)站建設方案,重慶APP軟件開發(fā),穆棱h5小程序開發(fā)搭建,穆棱網(wǎng)站營銷推廣歡迎穆棱等地區(qū)企業(yè)咨詢
位置參數(shù)

定義一個計算x^2的函數(shù),以及一個計算x^n的函數(shù)

def calc1(x):
    return x * x

def calc2(x, n):
    s = 1
    for i in range(n):
        s *= x
    return s

對于這兩個函數(shù),其參數(shù)都是位置參數(shù),同時也是必選參數(shù),調(diào)用函數(shù)時實參需和形參一一對應,當參數(shù)不對應時會引起錯誤,例如:

>>>calc2(2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: calc2() takes exactly 2 arguments (1 given)

>>>calc2(2, 2, 2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: calc2() takes exactly 2 arguments (3 given)

默認參數(shù)

對于函數(shù)calc2,如若函數(shù)調(diào)用過程中,計算x^2使用的較多,每次調(diào)用都要通過calc2(x, 2)來調(diào)用,這樣就略顯繁瑣,此時可以通過默認參數(shù)來簡化函數(shù)的調(diào)用,改寫函數(shù)為:

def calc3(x, n = 2):
    s = 1
    for i in range(n):
        s *= x
    return s

這樣,我們在調(diào)用calc3(2)時,就相當于調(diào)用calc3(2, 2),而對于其他次方仍需明確指出n。
默認參數(shù)在使用中應當?shù)淖⒁猓何恢?必選)參數(shù)在前,默認參數(shù)在后。

當有多個默認參數(shù)時,既可以按順序提供默認參數(shù),也可以不按順序提供默認參數(shù)。

def saveInfo(name, gender, age = 23, city = 'HangZhou'):
    print(name, gender, age, city)

saveInfo('Alen', 'M', city='Beijing')

定義默認參數(shù)時需要特別注意的一點:默認參數(shù)必須指向不變對象!
看如下例子:

def addEnd(L=[]):
    L.append('END')
    return L

>>>addEnd()
['END']
>>>addEnd()
['END', 'END']
>>>addEnd()
['END', 'END', 'END']

出現(xiàn)這樣的結果是因為:默認參數(shù)L僅僅代表[]的一個引用,函數(shù)定義時[]就已確定,每次調(diào)用addEnd時,使用的都是函數(shù)定義時的[],通過print(id(L))可以看出,每次調(diào)用該函數(shù)時使用的是同一內(nèi)存地址的[]。

def addEnd(L=[]):
    L.append('END')
    print(id(L))
    return L

addEnd()
#4518465224
#['END']
addEnd()
#4518465224
#['END', 'END']

為了避免這個問題,可以通過下面的方式,每次調(diào)用函數(shù)時,都會新建一個[]:

def addEnd(L=None):
    L = [] if L == None else L
    L.append('END')
    print(id(L))
    return L

addEnd()
#4518687688
#['END']
addEnd()
#4518688328
#['END']
可變參數(shù)

可變參數(shù)即傳入的參數(shù)個數(shù)是可變的,可以是0個,1個,或多個
先定義一下函數(shù),給定一組數(shù)字a,b,c...,計算這組數(shù)字的平方和a^2 + b^2 + c^2 + ...

def calc(numbers):
    s = 0
    for num in numbers:
        s = s + num * num
    return s

該函數(shù)在調(diào)用時,需先組裝一個list或tuple

>>>calc([1, 2, 3])
14
>>>calc([1, 2, 3])
30

如果利用可變參數(shù),函數(shù)的調(diào)用可以簡化

def calc(*numbers):
    s = 0
    for num in numbers:
        s = s + num * num
    return s

calc()
# 0
calc(1, 2, 3)     
# 14
calc(1, 2, 3, 4)
# 30

可變參數(shù)與list或tuple參數(shù)相比,僅僅在參數(shù)前面加了個*號,*的作用是將傳入的參數(shù)組裝成一個tuple
,如果已經(jīng)有一個list或tuple,要調(diào)用可變參數(shù)怎么辦呢?

>>>nums = [1, 2, 3]
>>>calc(nums[0], nums[1], nums[2])
14

這種寫法就過于繁瑣,針對這種情況,python允許在list或tuple前加一個*號,將list或tuple的元素變成可變參數(shù)傳入

>>>nums = [1, 2, 3]
>>>calc(*nums)
14

關鍵字參數(shù)

關鍵字參數(shù)允許你傳入0個或任意個含參數(shù)名的參數(shù),這些關鍵字參數(shù)在函數(shù)內(nèi)部自動組裝為一個dict
定義一個用戶注冊的函數(shù)

def user(name, age, **kw):
    print('name:', name, 'age:', age, 'other:', kw)

user('Bob', 23)          
# ('name:', 'Bob', 'age:', 23, 'other:', {})
user('Alen', 20, gender='M', job='Engineer') 
# ('name:', 'Alen', 'age:', 20, 'other:', {'gender': 'M', 'job': 'Engineer'})

函數(shù)user除了接收必選參數(shù)name,age外還接收關鍵字參數(shù)kw,調(diào)用該函數(shù)時,可以只傳入必選參數(shù),也可以傳入任意個數(shù)的關鍵字參數(shù),**的作用是將含參數(shù)名的參數(shù),組裝成一個dict傳入kw。關鍵字參數(shù)可以擴展函數(shù)的功能,調(diào)用者如果提供更多的信息,我們?nèi)钥梢越邮盏?。例如當用戶注冊時,姓名和年齡時必填項,其他是可選項,就可以通過關鍵字參數(shù)來實現(xiàn)。
和可變參數(shù)類似,當有現(xiàn)成dict時,可通過以下方式簡化調(diào)用:

>>>extra = {'city': 'Beijing', 'job': 'Engineer'}
user('Bob', 23, **extra)
name: Bob age: 23 other: {'city': 'Beijing', 'job': 'Engineer'}

**extra表示把extra這個dict的所有key-value用關鍵字參數(shù)傳入到函數(shù)的**kw參數(shù),kw將獲得一個dict。注意kw獲得的dict是extra的一份拷貝,對kw的改動不會影響到函數(shù)外的extra。

命名關鍵字參數(shù)

對于關鍵字參數(shù),函數(shù)的調(diào)用者可以傳入任意不受限制的關鍵字參數(shù),如果要限制關鍵字參數(shù)的名字,就可以用命名關鍵字參數(shù)。命名關鍵字參數(shù)需要一個特殊分隔符*,*后面的參數(shù)被視為命名關鍵字參數(shù),例如,只接收city和job作為關鍵字參數(shù):

def user(name, age, *, city, job):
    print('name:', name, 'age:', age, 'city:', city, 'job:', job)

user('Alen', 20, city='Beijing', job='Engineer') 
# name: Alen age: 20 city: Beijing job: Engineer

不同于位置參數(shù),命名關鍵字參數(shù)必須傳入?yún)?shù)名。如果沒有傳入?yún)?shù)名,調(diào)用將報錯:

>>>user('Alen', 20, 'Beijing', 'Engineer')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: user() takes 2 positional arguments but 4 were given

若函數(shù)定義中已經(jīng)有了一個可變參數(shù),后面跟著的命名關鍵字參數(shù)就不再需要一個特殊分隔符*了:

def user(name, age, *args, city, job):
    print(name, age, args, city, job)

命名關鍵字參數(shù)可以有缺省值,從而簡化調(diào)用:

def user(name, age, *, city='Beijing', job):
    print(name, age, city, job)

user('Bob', 22, job='Engineer')
# Bob 22 Beijing Engineer
參數(shù)組合

定義函數(shù),可以用必選參數(shù)、默認參數(shù)、可變參數(shù)、關鍵字參數(shù)和命名關鍵字參數(shù),這5種參數(shù)都可以組合使用。但是應注意,參數(shù)定義的順序必須是:必選參數(shù)、默認參數(shù)、可變參數(shù)、命名關鍵字參數(shù)和關鍵字參數(shù)。
定義一個函數(shù),包含上述參數(shù):

def user(name, age = 20, *args, city = 'Beijing', job, **kw):
    print(name, age, args, city, job, kw)

user('Bob', 20, 120, job = 'Engineer', gender = 'M')
# Bob 20 (120,) Beijing Engineer {'gender': 'M'}

對于任意函數(shù),都可以通過類似func(*args, **kw)的形式調(diào)用它,無論它的參數(shù)是如何定義的。

>>>args = ('Bob', 20, 120)
>>>kw = {'job':'Engineer', 'gender':'M'}
>>>user(*args, **kw)
Bob 20 (120,) Beijing Engineer {'gender': 'M'}

創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務器,動態(tài)BGP最優(yōu)骨干路由自動選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡助力業(yè)務部署。公司持有工信部辦法的idc、isp許可證, 機房獨有T級流量清洗系統(tǒng)配攻擊溯源,準確進行流量調(diào)度,確保服務器高可用性。佳節(jié)活動現(xiàn)已開啟,新人活動云服務器買多久送多久。

文章名稱:Python函數(shù)參數(shù)詳解-創(chuàng)新互聯(lián)
網(wǎng)頁地址:http://aaarwkj.com/article46/hogeg.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣微信小程序、商城網(wǎng)站App設計、ChatGPT、網(wǎng)站導航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設計公司
亚洲av乱码专区国产乱码| 国产精品福利手机在线观看| 国产一区二区三区不卡av| 强乱人妻中文字幕日本| 日韩av在线播放亚洲天堂| 欧美二区三区精品在线| 亚洲一区二区偷拍精品| 亚洲日本韩国福利久久| 视频一区视频二区在线| 少妇一区二区三区免费| 日韩av有码在线播放| 免费草b视频在线观看| 朝桐光日韩一区二区三区| 丁香六月色婷婷亚洲激情| 亚洲色图熟女激情另类| 麻豆视传媒短视频免费看| 日韩精品成人区中文字幕| 成人影院视频在线播放| 国产av一区二区三区日韩接吻| 线上免费看黄色亚洲片| 国产丝袜肉丝在线播放| 高清不卡日本一区二区三区久久| 欧美大片免费久久精品| 理论三级麻豆国产在线| 久久亚洲av麻衣北条麻妃| 97视频精品全部免费观看| 亚洲精品国产亚洲精品| 日韩av高清不卡一区二区三区| 国产不卡高清视频在线| 自拍偷拍亚洲精品第一页| 日韩欧美精品一区二区三区四区 | 国产精品久久久久久久久| 国产麻豆剧传媒国产av| 激情欧美精品桃桃激情| 最新91精品手机国产在线| 熟妇高潮一区二区在线观看| 日韩激情av中文字幕| 色婷婷国产精品高潮呻吟| 亚洲福利视频在线观看免费| 18禁黄久久久一区二区三区| 亚洲 精品一区二区|