關(guān)于Python中函數(shù)的幾種形參
Python函數(shù)形參
函數(shù)的參數(shù)分類:
- 形式參數(shù)和實際參數(shù)
- 關(guān)鍵字參數(shù)
- 可變類型參數(shù)和不可變類型參數(shù)
- 位置參數(shù)
- 可變長度參數(shù)
- 默認值參數(shù)
位置參數(shù)
必須按照準確順序?qū)⒑瘮?shù)調(diào)用中的實參傳遞給函數(shù)定義中相應(yīng)的形參。
def user(name, age): print("{} is {} years old".format(name,age)) # format()方法是尋找字符串中{}標識,然后把參數(shù)依次賦值給字符串中 user("Tom", 10) user(10, "Tom") # 輸出 Tom is 10 years old 10 is Tom years old
關(guān)鍵字參數(shù)
僅針對函數(shù)的調(diào)用,通過"參數(shù)名=參數(shù)值"的方式,可以直接在實參中將名稱和值關(guān)聯(lián)起來。這樣就不需要根據(jù)形參名字來區(qū)分參數(shù)了,即使不按照順序,解釋器也可以通過給出的關(guān)鍵字來匹配參數(shù)的值。
1:單個關(guān)鍵字參數(shù)
def user(name, age): print("{} is {} years old".format(name, age)) user("Tom", 10) user(age=10, name="Tom") # 即使實參的位置不是按照形參位置,也能匹配到相對應(yīng)參數(shù)的值。 # 輸出: Tom is 10 years old Tom is 10 years old
2:可變長度關(guān)鍵字參數(shù),即字典參數(shù)??梢詡鬟f多個關(guān)鍵字參數(shù)
- 如何使用:在定義函數(shù)的形參中,使用帶有兩個星號的形參,此時在調(diào)用函數(shù)時就可以傳遞多個關(guān)鍵字參數(shù),這些關(guān)鍵字參數(shù)都會傳遞給帶有兩個星號的形參中
- 使用場景:在預(yù)先不知道傳遞給函數(shù)的會是什么信息的情況下
def users(f_name, l_name, **user_info): print("first name: " + f_name) print("last name: " + l_name) for arg_name, arg_value in user_info.items(): print("{}:{}".format(arg_name, arg_value)) users("tom", "leaf", location="here", height=150, length=80 ) # 輸出 first name: tom last name: leaf location:here height:150 length:80
默認參數(shù)
編寫函數(shù)時形參指定了默認值的參數(shù),在調(diào)用函數(shù)中給形參提供了實參時,優(yōu)先使用調(diào)用函數(shù)時提供的實參,如果調(diào)用函數(shù)時沒有提供實參值,使用函數(shù)定義中的默認值
Tip:關(guān)鍵字參數(shù)必須放在所有位置參數(shù)的右邊。如果放在左邊,調(diào)用函數(shù)時傳遞的實參會默認從左往右進行關(guān)聯(lián),很有可能用戶這個實參是傳遞給位置參數(shù)的,但是卻被左邊的關(guān)鍵字參數(shù)攔截接收,那么關(guān)鍵字參數(shù)右邊的位置參數(shù)就沒有實參傳遞。此時就會報錯。
def user(name, age=12): print("{} is {} years old".format(name, age)) user("Tom", 10) # age參數(shù)傳遞了實參值,那么優(yōu)先使用傳遞的實參值 user("Tom") user(name="Tom") user(age=10, name="Tom") # 兩個參數(shù)都是關(guān)鍵字參數(shù),那么參數(shù)位置顛倒也可以正確匹配到 # 輸出: Tom is 10 years old Tom is 12 years old Tom is 12 years old Tom is 10 years old
非關(guān)鍵字可變長參數(shù)(元組)
- 如何使用:在定義函數(shù)的形參中,使用帶有一個星號的形參,此時在調(diào)用函數(shù)時就可以傳遞多個參數(shù),這些參數(shù)都會被封裝到一個元組中,傳遞給函數(shù)定義中這個帶有一個星號的形參
- 使用場景:在預(yù)先不知道傳遞給函數(shù)的會是什么信息的情況下
def users(*names): print(str(names)) for name in names: print(name) users("tech") users("tom", "test", "amy") # 輸出 tech tach ('tom','tets','amy') tom test amy
Tip:如果要讓函數(shù)接受不同類型的實參,就必須在函數(shù)定義中將接納任意數(shù)量實參的形參放在最后,這樣Python會先匹配位置實參和關(guān)鍵字實參,最后再將余下的實參都收集到最后一個元組實參中。
到此這篇關(guān)于關(guān)于Python中函數(shù)的幾種形參的文章就介紹到這了,更多相關(guān)Python函數(shù)形參內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python使用pandas讀xlsx文件的實現(xiàn)
這篇文章主要介紹了python使用pandas讀xlsx文件的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-05-05Python Flask 和 Django 的區(qū)別與適用場景示例分析
Flask和Django是兩個流行的Python Web框架,但設(shè)計哲學、功能和用法有很大區(qū)別,Flask是一個輕量級框架,簡單靈活,適合小型項目和快速原型開發(fā),本文給大家介紹Python Flask 和 Django 的區(qū)別與適用場景示例分析,感興趣的朋友跟隨小編一起看看吧2024-10-10卷積神經(jīng)網(wǎng)絡(luò)如何實現(xiàn)提取特征
這篇文章主要介紹了卷積神經(jīng)網(wǎng)絡(luò)如何實現(xiàn)提取特征問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-04-04python3 設(shè)置多進程名稱并在ps命令中可見(Centos7 系統(tǒng))
setproctitle 是一個 Python 模塊,用于設(shè)置進程標題(process title),通過設(shè)置進程標題,可以讓進程在系統(tǒng)級的進程管理工具中展示自定義的名稱,方便用戶查看和管理進程,本文介紹python3 設(shè)置多進程名稱并在ps命令中可見,感興趣的朋友一起看看吧2024-03-03使用Python+selenium實現(xiàn)第一個自動化測試腳本
這篇文章主要介紹了使用Python+selenium實現(xiàn)第一個自動化測試腳本,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-03-03