看的是廖雪峰的Python3講解,因為感覺很容易忘記,索性就寫下來,以便后面查閱。
1、位置參數(shù)
eg: power (x,n),其中x,n都是位置參數(shù),調(diào)用函數(shù)時,傳入的兩個值按照位置順序依次賦值
2、默認參數(shù)
eg: power(x,n=2),n就是默認參數(shù),再次調(diào)用power函數(shù)時,若n為2則不需要傳入,默認n=2
但是要注意:(1) 必選參數(shù)必須在前,默認參數(shù)在后。
(2) 默認參數(shù)必須指向不變對象。若指向變量,則每次調(diào)用函數(shù)的時候,默認參數(shù)的值都會發(fā)生改變。
3、可變參數(shù):傳入的參數(shù)個數(shù)是可變的
利用可變參數(shù),當傳入多個參數(shù)的時候,不再需要傳入一個list或tuple,而是直接傳入多個參數(shù),如calc(1,2,3),但在函數(shù)內(nèi)部,參數(shù)接收到的是一個tuple。
可變參數(shù)函數(shù)定義如下:def calc(*numbers),對比之前定義list和tuple的時候,僅僅在參數(shù)前面加了一個*號。
如果已經(jīng)有一個list或者tuple,要調(diào)用一個可變參數(shù)的函數(shù),可直接寫成calc(*num),在list或tuple前面加一個*號
4、關鍵字參數(shù)
可變參數(shù)允許你傳入0個或任意個參數(shù),這些可變參數(shù)在函數(shù)調(diào)用時自動組裝成一個tuple。而關鍵字參數(shù)允許你傳入0個或任意個含參數(shù)名的參數(shù),這些關鍵字參數(shù)在函數(shù)內(nèi)部自動組裝為一個dict。在參數(shù)前面加兩個**。實例如下
def person(name, age, **kw):
????????print('name:', name, 'age:', age, 'other:', kw)
>>>person('Michael',30)
name: Michael age: 30 other: {}
>>>person('Adam', 45, gender='M',job='Engineer')
name: Adam age: 45 other: {'gender' : 'M', 'job': 'Engineer‘}
若本身有一個dict,可直接在前面加兩個**作為參數(shù)傳進去
5、命名關鍵字參數(shù)
def person(name, age, *, city, job) 命名關鍵字參數(shù)以*作為特殊分隔符
調(diào)用如下person('Jack', 30, city='Beijing', job='Engineer')
總結:
參數(shù)定義的順序必須是:必選參數(shù)、默認參數(shù)、可變參數(shù)/命名關鍵字參數(shù)和關鍵字參數(shù)
對于任意函數(shù),都可以通過類似func(*args, **kw)的形式調(diào)用