'传入值不限制类型,但是两个类型相同'deffun_ma(a, b):return a + b
res = fun_ma(1,2)# res = fun_ma("!",2) # error 字符串无法和数字相加print(res)# 3
默认参数
'默认参数,不能放在飞默认参数之前''b要在a之前'deffun_ma(a, b=2):return a + b
'下面这个函数会报错''SyntaxError:非默认参数遵循默认参数'# def fun_ma1(a=1, b):# return a + b
res = fun_ma(1)print(res)
可变参数*
'参数可以是1个或者多个,可以是列表,元祖,字典''这些参数会被包含在一个元组里。在可变数量的参数之前,可能会出现零个或多个普通参数。:''只能放置最右边的参数'deffun_ma(a,*b):for i in b:return a + i
'下面这两个等价,*b会转化为元祖,传递字符串和数字的话'
res1 = fun_ma(1,(2))
res2 = fun_ma(1,2)
res2 = fun_ma(1,*(2,))# 这里传参加* 代表元祖# res2 = fun_ma(1,[2]) # error 列表外是元祖,循环一次无法相加int list 1+([2])print(res1)# 3print(res2,1)# 3
可变参数**
'参数可以是1个或者多个,可以是列表,元祖,字典''这些参数会被包含在一个字典里。在可变数量的参数之前,可能会出现零个或多个普通参数。:''这里的传值好像是 (1,a=1,b=3) 使用=连接成字典'deffun_ma(a,**b):for k, v in b.items():return a + v
res = fun_ma(1, b=2)# 3
res = fun_ma(1, c=5, d=4)
res = fun_ma(1,**{"c":5,"d":4})# res = fun_ma(1, {"b": 2}) # error 不支持这种print(res)# 6
单独*
''deffun_ma(a,*, b=2):return a + b
res = fun_ma(1)# res = fun_ma(1,2)# 这种就会报错, *像是一个占位符print(res)# 3