說說在 Python 中如何傳遞任意數量的實參

deniro發表於2019-03-19

說說在 Python 中如何傳遞任意數量的實參

1 用法

在定義函式時,加上這樣一個形參 "*形參名",就可以傳遞任意數量的實參啦:

def make_tags(* tags):
  '''為書本打標籤'''
  print('標籤:'+str(tags))

make_tags('藝術','藝術史')
複製程式碼

執行結果:

標籤:('藝術', '藝術史')

形參名 *tags 中的星號會讓 Python 建立一個名為 tags 的空元組, 並將函式所收到的所有值都封裝在這個元組中 。

注意: 即便函式只收到一個值,也會被放入元組中。

2 聯合位置實參與任意數量實參

如果要讓函式接受多種型別的實參, 那就必須在函式定義中將接收任意數量實參的形參定義放在最後 。因為 Python 會先匹配位置實參和關鍵字實參, 然後再將多餘的實參放入最後一個形參元組中 。

def make_tags(book_name, *tags):
    '''為某本書打標籤'''
    print('book_name=' + book_name)
    print('tags=' + str(tags))

make_tags('世界美術名作二十講 : 插圖珍藏本','藝術')
make_tags('世界美術名作二十講 : 插圖珍藏本','藝術', '藝術史')
複製程式碼

執行結果:

book_name=世界美術名作二十講 : 插圖珍藏本 tags=('藝術',) book_name=世界美術名作二十講 : 插圖珍藏本 tags=('藝術', '藝術史')

3 任意數量關鍵字實參

有時候,預先並不清楚傳遞給函式的會是什麼樣的引數。 這時, 我們就可以將函式編寫成能夠接受任意數量的鍵—值對。

def create_account(name, pwd, **others):
    '''建立賬戶'''
    account = {}
    account['name'] = name
    account['pwd'] = pwd
    for key, value in others.items():
        account[key] = value
    return account


account = create_account('早安', '1', sex='女', age='20')
print('account=' + str(account))
複製程式碼

執行結果:

account={'name': '早安', 'pwd': '1', 'sex': '女', 'age': '20'}

相關文章