一:位置參數(正常參數)
def power(x):
return x*x
二:默認參數
def power(x,n=2):
s = 1
while n>0:
n = n - 1
s = s * x
return s
當調用power(5)時,相當於調用power(5,2),即n不傳遞值則默認爲2,當n不取2時需傳入明確值。
注:定義默認參數時一定要指向不變對象
三:可變參數
即傳入的參數個數是可變的,可以使1個、2個到任意個,也可以是0個
def calc(*numbers):
sum = 0
for n in numbers:
sum = sum + n
return sum
>>>calc(1,2)
函數內部numbers接收到的是一個tuple
如果傳入的參數是list或tuple,如:
>>>nums = [1,2,3]
>>>calc(*nums)
四:關鍵字參數
即允許傳入0個或任意個含參數名的參數,這些關鍵字參數在函數內部自動組裝爲一個dict
def person(name,age,**kw):
print('name:',name,'age:',age,'other:',kw)
>>>person('Bob',33,city='Hefei')
也可以直接傳入一個dict參數,如:
>>>extra = {'city':'Hefei','job':'Python'}
>>>person('Bob',33,**extra)
五:命名關鍵字參數
如果要限制關鍵字參數的名字,就可以用命名關鍵字參數,例如,只接受city和job作爲關鍵字參數。函數定義如下:
def person(name,age,*,city,job):
print(name,age,city,job)
命名關鍵字需要用*符號隔開,*後面的參數被視爲命名關鍵字參數。
>>>person('Jack',24,city='Hefei',job='Python')
如果函數定義中已經有一個可變參數,則後面跟着的即爲命名關鍵字參數,此時不需要分隔符*。
def person(name,age,*args,city,job):
print(name,age,args,city,job)
函數調用時,命名關鍵字參數必須傳入參數名,否則報錯:
上述函數錯誤調用方法:
>>>person('jack',24,'Beijing','python')
正確調用方式:
>>>person('jack',24,city='Beijing',job='python')
命名關鍵字參數可以有缺省值,從而簡化調用:
def person(name,age,*,city='Beijing',job):
print(name,age,city,job)
>>>person('jack',22,job='python')