天天看點

Python - 函數參數之必傳參數、預設參數、可變參數、關鍵字參數的詳細使用

必傳參數:平時最常用的,必傳确定數量的參數

預設參數:在調用函數時可以傳也可以不傳,如果不傳将使用預設值

可變參數:可變長度參數

關鍵字參數:長度可變,但是需要以 key-value 形式傳參

add 函數有兩個參數,第一個參數是 a,第二個參數是 b

傳入的兩個整數按照位置順序依次賦給函數的參數 a 和 b,參數 a 和參數 b 被稱為位置參數

根據函數定義的參數位置來傳遞參數,要求傳遞的參數與函數定義的參數兩者一一對應

如果 “傳遞的參數個數” 不等于 “函數定義的參數個數”,運作時會報錯

使用預設參數,可以簡化函數的調用,尤其是在函數需要被頻繁調用的情況下

聲明函數時,當同時存在必傳參數和預設參數,形參的順序必須是 (必傳參數 , 預設參數),不能預設參數在前

假設需要一個 2 個數的求和函數

此時,有需要一個 3 個數的求和函數

那麼,如果還需要一個 4 個數的求和函數,可以通過上述方式再加一個函數,但顯然很麻煩

是以,可變參數誕生了

希望隻編寫一個計算求和的函數 add,但函數的參數個數是不确定的,這樣就可以複用了

該函數被設定為能夠接受可變數量的參數

args 的類型是元組

調用該函數時,所有的參數被合并成一個元組

合并後的元組被指派給 args,通過周遊 args 可以通路傳遞的參數

args是一個元組類型

可變參數可不傳,也可以傳很多個值

*(2, 3, 4, 5) ,在元組or清單前面加一個 * ,代表将裡面的每個元素獨立出來,單獨作為一個形參傳進去,也稱為元組解包

不懂*(1,2,3)可以看看這段代碼

可變參數之前的參數不能指定參數名

必傳參數跟在關鍵字參數後面是不允許的

函數傳入實參時,可變參數(<code>*</code>)之後的參數必須指定參數名,否則就會被歸到可變參數之中

c 輸出了 None ,沒有拿到參數值

Python 允許調用函數時,以 “參數名 = 參數值” 的形式傳遞參數

"參數名 = 參數值" 形式的參數,例如 a = 1 和 b = 2,被稱為關鍵字參數

在參數前加上符号 ** 參數表示函數可以接收關鍵字參數

該函數被設定為能夠接受關鍵字參數

kwargs 的類型是字典

調用該函數時,所有的關鍵字參數被合并成一個字典

合并後的字典被指派給 kwargs,通過通路 kwargs 可以通路參數名和參數值

kwargs 是一個字典類型

關鍵字參數可傳可不傳

傳值的時候需要傳鍵值對,如果要傳dict需要在前面加上 ** ,表示将這個dict的所有key-value當成獨立的關鍵字參數(變成 key = value)傳入到 kwargs,而修改 kwargs 不會影響原來的 dict

不用 dict 的話也可以直接 key=value 的寫法,如果和預設參數重名,若前面沒有傳值的話,會當成預設參數傳值;若有的話會直接報錯

聲明函數時,預設參數不可以放在關鍵字參數後面

**dict ,也叫字典解包

這是 requests.get() 方法的最終調用函數,可以看到除了method、url是必傳參數,還能通過 kwargs 傳很多個參數

https://www.cnblogs.com/poloyy/p/15096333.html