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