def 函数名(形参1,形参3,形参3,...): 代码块
def s(a,b): print('a =',a) print('b =',b) print(a,'+',b,'=',a+b) s(1,2)
a = 1 b = 2 1 + 2 = 3
def fn(a,b,c=10): print('a =',a) print('b =',b) print('c =',c) fn(1,2,3)
a = 1 b = 2 c = 3
def fn(a,b,c): print('a =',a) print('b =',b) print('c =',c) fn(b=1,c=2,a=3)
a = 3 b = 1 c = 2
fn(a=3,1,2)
SyntaxError: positional argument follows keyword argument
def fn(*b): print('b =',b,type(b)) fn() # *b会接受全部的位置实参,而且会将这些实参统一保存到一个元组中-->装包 fn(1,2,3,4,5,6)
b = () <class 'tuple'> b = (1, 2, 3, 4, 5, 6) <class 'tuple'>
def fn2(a,*b,*c): print('a =',a) print('b =',b) print('c =',c) fn2(1,2,3,4,5)
SyntaxError: invalid syntax
def fn2(a,*b,c): print('a =',a) print('b =',b) print('c =',c) fn2(1,2,3,4,c=5)
a = 1 b = (2, 3, 4) c = 5
def fn3(*b): print('b =',b) fn3(b=1,c=2)
TypeError: fn3() got an unexpected keyword argument 'b'
def fn3(a,c,**b): print('a =',a) print('b =',b) print('c =',c) fn3(a=1,d=2,c=3,e=5,f=90)
a = 1 b = {'d': 2, 'e': 5, 'f': 90} c = 3
def fn3(a,b,c): print('a =',a) print('b =',b) print('c =',c) t = (1,2,3) fn3(*t)
a = 1 b = 2 c = 3
t = {'a':1,'b':2,'c':3} fn3(**t)
a = 1 b = 2 c = 3