本文總結了函數傳參的方式,便於使用時快速查詢python
本文總結自廖雪峯的python3教程數組
函數的命名不能以數字開頭,且只能包含字母、數字、下劃線。與變量相同。bash
至關於一個佔位,傳參時不須要指定參數名函數
def testFunc(x):
return x * x
def testFunc2(x, y):
return x + y
複製代碼
調用:ui
>>>testFunc(6)
36
>>>testFunc2(6, 7)
13
複製代碼
定義函數時給參數設置一個默認值,當傳參時沒有傳入參數則自動賦予默認值做爲參數spa
格式特色:「默認參數」必須放在「位置參數」的後面code
注意:默認參數必須指向不變對象對象
def testFunc3(x, y=2):
return x
def testFunc4(x=2, y=3):
return x, y
複製代碼
調用:教程
>>> testFunc3(y=4, x=0)
(0, 4)
>>> testFunc3(3)
(3, 2)
>>> testFunc3(9,8)
(9, 8)
複製代碼
當傳入的參數的數量沒法肯定時就能夠使用可變參數,能夠傳入任意個包括0個參數get
若是傳入了多個參數,在函數調用時自動組裝成爲一個tuple
格式特色:定義函數時在參數名前加一個星號*
def testFunc5(*numbers):
sum = 1
for n in numbers:
sum = sum * n
return sum
複製代碼
調用:
>>> testFunc5(3, 5, 9)
135
複製代碼
傳入一個list或tuple的時候必須在參數前面加上星號*
>>> testNumbers = [6, 2, 4]
>>> testFunc5(*testNumbers)
48
複製代碼
關鍵字參數容許傳入0個或人一個含有參數名的參數,
函數調用時自動組裝爲一個dict
定義:
def testFunc6(name, numberOfPhones, **phonesName):
print(f"""name: {name} number: {numberOfPhones} other: {phonesName}""")
複製代碼
調用:
>>> testFunc6('Simon', 3, Phone1='iPhone', Phone2='Xiaomi')
name: Simon
number: 3
other: {'Phone1': 'iPhone', 'Phone2': 'Xiaomi'}
複製代碼
或者能夠將dict直接傳入關鍵詞參數,可是傳入時須要再dict名稱前加2個星號**
定義:
Phones= {'Phone1': 'iPhone', 'Phone2': 'Xiaomi'}
testFunc6('Simon', 3, **Phones)
複製代碼
命名關鍵字參數限制了傳入的參數的名字
傳參時必須傳入參數名,不然將報錯
定義:
def testFunc7(name, os, *, version, language):
print(name, os, version, language)
複製代碼
調用
>>> testFunc7('pyServer', 'Centos', version= 8, language= 'CN')
pyServer Centos 8 CN
複製代碼
若是函數定義中已經有了一個可變參數,後面跟着的命名關鍵字參數就再也不須要一個特殊分隔符*了:
def testFunc7(name, os, *type, version, language):
print(name, os, type, version, language)
複製代碼
當一個函數存在多種參數類型,必須遵照參數使用的順序:
必選參數、默認參數、可變參數、命名關鍵字參數和關鍵字參數
定義:
def f1(a, b, c=0, *args, **kw):
print('a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw)
def f2(a, b, c=0, *, d, **kw):
print('a =', a, 'b =', b, 'c =', c, 'd =', d, 'kw =', kw)
複製代碼