這兩天看了看Python,覺得要做一下筆記,其他方面沒什么難點(diǎn),但看了函數(shù)的參數(shù)那一塊兒之后發(fā)現(xiàn)還是要理清楚的,因此從函數(shù)參數(shù)開始寫。
函數(shù)的參數(shù)
位置參數(shù)
def power(x, n):
s = 1
while n > 0:
n = n - 1
s = s * x
return s
這段代碼中x和n是兩個位置參數(shù),傳入值按照位置賦值給x和n。
默認(rèn)參數(shù)
當(dāng)只傳入一個參數(shù)時,會導(dǎo)致另一個參數(shù)為空而報錯,因此需要有一個默認(rèn)值。
def power(x, n=2):
s = 1
while n > 0:
n = n - 1
s = s * x
return s
當(dāng)只傳入x一個參數(shù)時,那么就是計算平方值。
注意
- 必選參數(shù)在前,默認(rèn)參數(shù)在后。
- 有多個默認(rèn)參數(shù)時,可以按順序提供參數(shù);也可以指明參數(shù)名稱和值,如name=‘tian’,其他參數(shù)使用默認(rèn)參數(shù)。
- 定義參數(shù)時默認(rèn)參數(shù)必須指向不變對象
可變參數(shù)
def calc(*numbers):
sum = 0
for n in numbers:
sum = sum + n * n
return sum
這個參數(shù)numbers就是可變參數(shù),可以傳入1個、2個到任意個,還可以是0個參數(shù)。
>>> nums = [1, 2, 3]
>>> calc(*nums)
14
*nums表示把這個list的所有元素輸入,然后進(jìn)行計算。
關(guān)鍵字參數(shù)
可變參數(shù)允許傳入0個或任意個參數(shù),可變參數(shù)會組裝成tuple。關(guān)鍵字參數(shù)允許傳入0個或任意個含參數(shù)名的參數(shù),這些關(guān)鍵字參數(shù)在函數(shù)內(nèi)部自動組裝為一個dict。
def person(name, age, **kw):
print('name:', name, 'age:', age, 'other:', kw)
這個函數(shù)中kw就是關(guān)鍵字參數(shù)
>>> extra = {'city': 'Beijing', 'job': 'Engineer'}
>>> person('Jack', 24, **extra)
name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'}
與可變參數(shù)類似,extra把extra的所有元素傳到了參數(shù)kw中,且對kw的修改不會影響函數(shù)外的extra。
命名關(guān)鍵字參數(shù)
- 用*限制
def person(name, age, *, city, job):
print(name, age, city, job)
這樣city和job必須傳入并且是以city=''和job=''的形式。
2.已有可變參數(shù)
def person(name, age, *args, city, job):
print(name, age, args, city, job)
那么不需要再加*了