python中函數(shù)傳參的多種方式
函數(shù)的傳參方式有多種,位置參數(shù)、關鍵字參數(shù)、缺省參數(shù)、不定長參數(shù)。不過我們最常用的可能是位置參數(shù),接下來讓我們了解一下我們的參數(shù)
一、位置參數(shù)
調(diào)用函數(shù)時,編譯器會將函數(shù)的實際參數(shù)按照位置順序依次傳遞給形式參數(shù),即將第1個實際參數(shù)傳遞給第1個形式參數(shù),將第2個實際參數(shù)傳遞給第2個形式參數(shù),依此類推。
其實也就是傳遞的參數(shù)和定義的參數(shù)順序和個數(shù)一樣。
舉個例子
def xuesheng(name,age,gender):
print(f'學生的名字是{name},年齡是{age},性別是{gender}')
#這是我們定義函數(shù),所以我們調(diào)用時就應該按name、age、gender的順序來
xuesheng('李華',18,'男')輸出的結果是
學生的名字是李華,年齡是18,性別是男
二、關鍵字參數(shù)
使用位置參數(shù)傳值時,如果函數(shù)中存在多個參數(shù),記住每個參數(shù)的位置及其含義并不是一件容易的事,此時可以使用關鍵字參數(shù)進行傳遞。關鍵字參數(shù)傳遞通過“形式參數(shù) = 實際參數(shù)”(“鍵 = 值”)的格式將實際參數(shù)與形式參數(shù)相關聯(lián),根據(jù)形式參數(shù)的名稱進行參數(shù)傳遞。
示例
def xuesheng(name,age,gender):
print(f'學生的名字是{name},年齡是{age},性別是{gender}')
xuesheng(name = '李華',age = 18,gender = '男')此時調(diào)用時括號里的age = 18,name = '李華',gender = '男'的順序是可以打亂的,輸出結果都不變
學生的名字是李華,年齡是18,性別是男
當我們函數(shù)調(diào)用時,如果有位置參數(shù)時,位置參數(shù)必須在關鍵字參數(shù)的前面,但關鍵字參數(shù)之間順序可以改變,記住位置參數(shù)是一一對應的,不要把后面的寫前面來了
def xuesheng(name,age,gender):
print(f'學生的名字是{name},年齡是{age},性別是{gender}')
#兩種都有時,前面位置參數(shù)只可能是名字,不會是年齡和性別,位置參數(shù)是有順序的
xuesheng('李華',gender = '男',age = '18')關鍵字參數(shù)作用:可以讓函數(shù)更加清晰、容易使用,同時也清除了參數(shù)的順序需求
三、缺省參數(shù)(也稱默認參數(shù))
定義函數(shù)時可以指定形式參數(shù)的默認值,調(diào)用函數(shù)時,若沒有給帶有默認值的形式參數(shù)傳值,則直接使用參數(shù)的默認值;若給帶有默認值的形式參數(shù)傳值,則實際參數(shù)的值會覆蓋默認值。但要注意的時所有位置參數(shù)必須出現(xiàn)在默認參數(shù)之前,包括函數(shù)定義與調(diào)用。
示例
def xuesheng(name,age,gender = '男'):
print(f'學生的名字是{name},年齡是{age},性別是{gender}')
xuesheng('李華','18')結果與前面還是一樣,李華的輸出信息沒改變,如果我們在默認值那改成女,結果輸出就是女(當然也可以在默認為男的時候傳值進去,把他改成女)
四、不定長參數(shù)
若要傳入函數(shù)中的參數(shù)的個數(shù)不確定,可以使用不定長參數(shù)。不定長參數(shù)也稱可變參數(shù),此種參數(shù)接收參數(shù)的數(shù)量可以任意改變。他的類型分為位置傳遞和關鍵字傳遞。
先提前說明一下*args 和 **kwargs 不是特殊的參數(shù),只是編程人員約定的變量名字,args 是 arguments 的縮寫,表示位置參數(shù);kwargs 是 keyword arguments 的縮寫,表示關鍵字參數(shù)。 其實并不是一定要寫成 *args 和 **kwargs ,只有前面的 * (星號)才是必須的
1.位置傳遞
def test(*args):
print(args)
print(type(args))
#調(diào)用函數(shù),傳入任意個參數(shù)
test(1,2,3,'我','是','李華')不定長參數(shù)*args用于接收不定數(shù)量的位置參數(shù),調(diào)用函數(shù)時傳入的所有參數(shù)被*args接收后以元組形式保存.
#以元組形式存在 (1, 2, 3, '我', '是', '李華') <class 'tuple'>
2.關鍵字參數(shù)
傳入?yún)?shù)要以“鍵 = 值”的形式才會被接受
def test(**kwargs):
print(kwargs)
print(type(kwargs))
#調(diào)用函數(shù),傳入任意個參數(shù)
test(a = '不',b = '愛',c = '作文')不定長參數(shù)**kwargs用于接收不定數(shù)量的關鍵字參數(shù),調(diào)用函數(shù)時傳入的所有參數(shù)被**kwargs接收后以字典形式保存下來。
{'a': '不', 'b': '愛', 'c': '作文'}
<class 'dict'>小結:
1 位置參數(shù)一定要按順序
2 關鍵字參數(shù)必須以”鍵 = 值“的形式,如果和位置參數(shù)混用,位置參數(shù)一定要放前
3 缺省參數(shù)默認值一定要放最后
4 不定長參數(shù)要分清位置不定長和關鍵字不定長,前者以元組形式接收,"*"號不能忘,
后者以字典形式接收,"**"不能忘
到此這篇關于python中函數(shù)傳參的多種方式的文章就介紹到這了,更多相關python 函數(shù)傳參內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Pycharm中安裝Pygal并使用Pygal模擬擲骰子(推薦)
這篇文章主要介紹了Pycharm中安裝Pygal并使用Pygal模擬擲骰子,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-04-04
在Django中動態(tài)地過濾查詢集的實現(xiàn)
本文主要介紹了Django中動態(tài)地過濾查詢集的實現(xiàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03
一文搞懂Python中pandas透視表pivot_table功能
透視表是一種可以對數(shù)據(jù)動態(tài)排布并且分類匯總的表格格式。或許大多數(shù)人都在Excel使用過數(shù)據(jù)透視表,也體會到它的強大功能,而在pandas中它被稱作pivot_table,今天通過本文給大家介紹Python中pandas透視表pivot_table功能,感興趣的朋友一起看看吧2021-11-11

