函數傳參
- 空參數
定義函數時括號里面沒有形參,調用時不用傳參。
def func():
print('null para.')
# 調用
func()
- 位置傳參
規定形參的數量,調用時必須傳遞相同數量的形參。
def func(a, b):
print(a,b)
# 調用
func(11, 22)
- 帶默認參數的形參
帶默認值的參數位於非默認值參數的后面, 即位於位置參數,可變參數后面。
def func(a, b, c=0):
print(a, b, c)
# 調用
func(11, 22)
def f2(a, b, *args):
print(a)
print(b)
print(args)
rest = f2(10, 20, 30, 40, 50)
print(rest)
執行結果:
10
20
(30, 40, 50)
def f2(a, b, *args):
print(a)
print(b)
print(args)
my_tuple = (30, 40, 50)
rest = f2(10, 20, *my_tuple)
print(rest)
執行結果:
10
20
(30, 40, 50)
除位置參數10, 20以后的數據自動賦值給了元組形參*args
如果只傳10,20這2個參數給f2函數也不會報錯,此時元組接收的參數為空。
def f2(a, b, **kwargs):
print(a)
print(b)
print(kwargs)
rest = f2(10, 20, ka=558, kb='bbb')
print(rest)
執行結果:
10
20
{'ka': 558, 'kb': 'bbb'}
def f2(a, b, **kwargs):
print(a)
print(b)
print(kwargs)
kw_para = {'ka': 558,' kb': 'bbb'}
rest = f2(10, 20, **kw_para)
print(rest)
執行結果:
10
20
{'ka': 558, 'kb': 'bbb'}
def f2(a, b, *args, **kwargs):
print(a)
print(b)
print(args)
print(kwargs)
my_kw = {'ka': 558, 'kb': 'bbb'}
my_tuple = (30, 40, 50)
rest = f2(10, 20, *my_tuple, **my_kw)
print(rest)
結果:
10
20
(30, 40, 50)
{'ka': 558, 'kb': 'bbb'}
按位置參數、元組參數、字典參數的順序定義函數和調用,位置順序不能調換!
除非有帶默認參數的位置參數,此時帶有默認參數的位置參數需要放到元組參數和字典參數之間。
- 帶有默認參數的位置參數、元組參數、字典參數混合傳參
def f2(a, *args, b=0, **kwargs):
print(a)
print(b)
print(args)
print(kwargs)
my_kw = {'ka': 558, 'kb': 'bbb'}
my_tuple = (30, 40, 50)
rest = f2(10, *my_tuple, **my_kw)
print(rest)
結果:
10
0
(30, 40, 50)
{'ka': 558, 'kb': 'bbb'}
函數返回值
- 函數執行完不出現return語句,或者return語句不返回值,此時調用者收到的返回值為None。
- 可以返回一個元組。
def func():
return 1, 2, 3
x, y, z = func()