1.位置參數:
例如計算一個整數的平方:
def power(x) return x * x
顯然參數x就是一個位置參數,如果要是計算5*5*5..............*5 ,這個函數就太麻煩了,我們可以再定義下面這個函數來解決:
def power(x, n): s = 1 while n > 0: n = n - 1 s = s * x return s
修改后的函數,有兩個
位置參數x
和n
,調用函數時,傳入的兩個值按照位置順序依次賦給參數x
和n
>>>power(5,3)
125
2.默認參數
假設我們總是想要求一個數的立方和,這時候我們可以把函數中的第二個位置參數設置為默認值3
ps:定義默認參數要牢記一點:默認參數必須指向不變對象!
def power(x, n=3): s = 1 while n > 0: n = n - 1 s = s * x return s
>>>power(2)
8
3.可變參數【以從下面這個例子學習】
例:計算計算a2 + b2 + c2 + ……
方法一:通過list或tuple傳參數
顯然這樣調用的時候,總是需要構造一個list或tuple比較麻煩,為此引入可變參數的概念,從下面這個例子體會:
方法二:定義函數時把參數定義為可變參數【其實也就是在可變參數前面加個*號】
PS:可以在list或tuple前面加一個*
號,把list或tuple的元素變成可變參數傳進去:
4.關鍵字參數【例子學習】
可變參數允許你傳入0個或任意個參數,這些可變參數在函數調用時自動組裝為一個tuple。而關鍵字參數允許你傳入0個或任意個含參數名的參數,這些關鍵字參數在函數內部自動組裝為一個dict:
運行結果:
name: Michael age: 30 other: {}
name: ttwang age: 23 other: {'city': 'Hangzhou'}
name: Jane age: 22 other: {'gender': 'M', 'job': 'Engineer'}
關鍵詞參數有什么用:它可以擴展函數的功能。比如,在person
函數里,我們保證能接收到name
和age
這兩個參數,但是,如果調用者願意提供更多的參數,我們也能收到。試想你正在做一個用戶注冊的功能,除了用戶名和年齡是必填項外,其他都是可選項,利用關鍵字參數來定義這個函數就能滿足注冊的需求。
和可變參數一樣,也可以先組裝出一個dict,然后,把該dict轉換為關鍵字參數傳進去【簡單調用如下】:
5.命名關鍵字參數
1.如果想要限制關鍵字參數的名字,需要用到命名關鍵詞參數,命名方式和調用方式,見下面的例子:
2.注意: 調用時必須傳入參數名city和job否則報錯:
報錯信息:
由於調用時缺少參數名city
和job
,Python解釋器把這4個參數均視為位置參數,但person()
函數僅接受2個位置參數。
3.命名關鍵字參數可以直接給出默認值,調用時就可以不用寫入了:
#函數定義,直接給出命名關鍵字參數的默認值 def person(name, age, *, city='Beijing', job): print(name, age, city, job) #函數調用形式: #由於命名關鍵字參數city具有默認值,調用時,可不傳入city參數: >>> person('Jack', 24, job='Engineer') Jack 24 Beijing Engineer
4.參數組合
在Python中定義函數,可以用必選參數、默認參數、可變參數、關鍵字參數和命名關鍵字參數,這5種參數都可以組合使用。但是請注意,參數定義的順序必須是:必選參數、默認參數、可變參數、命名關鍵字參數和關鍵字參數。【詳見】