【無為則無心&Python基礎(chǔ)】— 40.Python函數(shù)(二)--函數(shù)實參傳遞的方式(1)

(四)函數(shù)實參傳遞的方式

1、位置參數(shù)

位置參數(shù):調(diào)用函數(shù)時根據(jù)函數(shù)定義的參數(shù)位置來傳遞參數(shù)。

def user_info(name, age, gender):
    print(f'您的名字是{name}, 年齡是{age}, 性別是{gender}')

user_info('TOM', 20, '男')

注意:傳遞和定義參數(shù)的順序及個數(shù)必須一致。就是將對應(yīng)位置的實參復(fù)制給對應(yīng)位置的形參,第一個實參賦值給第一個形參,第二個實參賦值給第二個形參,以此類推。

示例

def user_info(name, age, gender):
    print(f'您的名字是{name}, 年齡是{age}, 性別是{gender}')

# 1.調(diào)用函數(shù),傳遞的參數(shù)個數(shù)不正確
# 結(jié)果:TypeError: user_info() missing 1 required positional argument: 'gender'
user_info('TOM', 20)

# 2.調(diào)用函數(shù),傳遞的參數(shù)的順序不正確
# 不會報錯,但輸出的內(nèi)容完全歧義。
# 結(jié)果:您的名字是男, 年齡是TOM, 性別是20
user_info('男', 'TOM', 20)

2、關(guān)鍵字參數(shù)

可以不按照形參定義的順序去傳遞,而直接根據(jù)參數(shù)名去傳遞參數(shù)。

函數(shù)調(diào)用,通過鍵=值形式加以指定??梢宰尯瘮?shù)更加清晰、容易使用,同時也清除了參數(shù)的需求。

def user_info(name, age, gender):
    print(f'您的名字是{name}, 年齡是{age}, 性別是{gender}')

# 正確用法
user_info('Rose', age=20, gender='女')
user_info('小明', gender='男', age=16)

# 位置參數(shù)必須寫在關(guān)鍵字參數(shù)的前面
# 結(jié)果:SyntaxError: positional argument follows keyword argument
user_info(gender='男', age=16, "孫悟空")

# 位置參數(shù)必須寫在關(guān)鍵字參數(shù)的前面,同時位置參數(shù)的順序也要對應(yīng)
# 結(jié)果:TypeError: user_info() got multiple values for argument 'age'
user_info("孫悟空", '男', age=16)

# 格式正確,但是位置參數(shù)的順序不正確,結(jié)果也會產(chǎn)生歧義。
# 結(jié)果:您的名字是20, 年齡是孫悟空, 性別是男
user_info(20, "孫悟空", gender='男')

"""
總結(jié):定義參數(shù)時,位置參數(shù)和關(guān)鍵字參數(shù),盡量統(tǒng)一使用一種。
"""

注意:

  • 位置參數(shù)和關(guān)鍵字參數(shù)可以混合使用。
  • 函數(shù)調(diào)用時,如果有位置參數(shù)時,位置參數(shù)必須在關(guān)鍵字參數(shù)的前面,但關(guān)鍵字參數(shù)之間不存在先后順序。

3、缺省參數(shù)(默認(rèn)參數(shù))

缺省參數(shù)也叫默認(rèn)參數(shù),用于定義函數(shù)時,為參數(shù)提供默認(rèn)值,調(diào)用函數(shù)時可不傳該默認(rèn)參數(shù)的值。

提示:所有位置參數(shù)必須出現(xiàn)在默認(rèn)參數(shù)前(因為默認(rèn)參數(shù)的格式和關(guān)鍵字參數(shù)格式一樣,所以都要寫在所有參數(shù)之后),包括函數(shù)定義和調(diào)用。

def user_info(name, age, gender='男'):
    print(f'您的名字是{name}, 年齡是{age}, 性別是{gender}')

# 沒有為缺省參數(shù)傳值,表示使用默認(rèn)值。
user_info('TOM', 20)
# 為缺省參數(shù)傳值,使用這個值,即修改了默認(rèn)值。
user_info('Rose', 18, '女')

注意:函數(shù)調(diào)用時,如果為缺省參數(shù)傳值則修改默認(rèn)參數(shù)值,否則使用這個默認(rèn)值。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容