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 , 請確保函式呼叫與函式定義相匹配 。