說說在 Python 中如何向函式傳參

deniro發表於2019-03-17

說說在 Python 中如何向函式傳參

1 位置實參

位置實參指的是,實參的順序與形參相同。

def to_read(book_name, book_type):
    '''想讀的書'''
    print('我想讀《' + book_name + '》咯')
    print('它屬於' + book_type + '領域')

to_read('現代藝術150年 : 一個未完成的故事','藝術')
複製程式碼

執行結果:

我想讀《現代藝術150年 : 一個未完成的故事》咯 它屬於藝術領域

注意: 使用位置實參時,引數的順序很重要。

2 關鍵字實參

關鍵字實參指的是:傳遞給函式的是 “名稱-值對” 。這樣在呼叫函式時就不用考慮實參順序咯, 而且還可以清楚地指出實參各個值的用途。

def to_read(book_name, book_type):
    '''想讀的書'''
    print('我想讀《' + book_name + '》咯')
    print('它屬於' + book_type + '領域')

to_read(book_name='現代藝術150年 : 一個未完成的故事',book_type='藝術')
複製程式碼

執行結果:

我想讀《現代藝術150年 : 一個未完成的故事》咯 它屬於藝術領域

注意: 使用關鍵字實參時, 必須準確地指出定義中的形參名。

3 預設值

可以給每個形參指定預設值 。 如果在呼叫函式時,有給形參提供實參, 那麼將使用指定的實參值; 如果沒有,那麼將使用預設值。

使用預設值可以簡化函式呼叫的方式, 而且還可清楚地指明函式的典型用法。

def to_read(book_name, book_type='藝術'):
    '''想讀的書'''
    print('我想讀《' + book_name + '》咯')
    print('它屬於' + book_type + '領域')

to_read(book_name='現代藝術150年 : 一個未完成的故事')
to_read('現代藝術150年 : 一個未完成的故事')
to_read('現代藝術150年 : 一個未完成的故事','藝術史')
複製程式碼

執行結果:

我想讀《現代藝術150年 : 一個未完成的故事》咯 它屬於藝術領域 我想讀《現代藝術150年 : 一個未完成的故事》咯 它屬於藝術領域 我想讀《現代藝術150年 : 一個未完成的故事》咯 它屬於藝術史領域

注意: 在使用預設值時, 函式的形參列表必須先列出沒有預設值的形參, 然後再列出有預設值的實參。這樣可以讓函式也支援位置實參。

可以混合使用位置實參、 關鍵字實參以及預設值等傳參方式。建議使用對我們來說最容易理解的傳參方式。

4 傳參錯誤

如果我們在呼叫函式時,提供的實參多於或少於函式定義的資訊時,就會丟擲實參不匹配錯誤。 形如:TypeError: to_read() missing 1 required positional argument: 'book_name'

出現類似的 traceback , 請確保函式呼叫與函式定義相匹配 。

相關文章