位置参数和可变参数混合使用
如果想给位置参数赋值,位置参数一定要放在可变参数左侧;
def func(a,*args): print(a) # 1 print(args) # (2, 3, 4) func(1,2,3,4)
位置参数和默认参数混合使用
如果想给位置参数赋值,位置参数一定要放在默认参数左侧;
def func(a,b=10): print(a) # 1 print(b) # 10 func(1)
默认参数和可变参数混合使用
默认参数和可变参数混合使用时,默认参数要放在可变参数的右侧,并且用关键字指定赋值。
def func(*args,a): print(args) # (1, 2, 3) print(a) #10 func(1,2,3,a=10)
拆包
list、tuple、dict 这三个高级数据类型在变量个数与内部元素个数相等的情况下都可以拆包,只不过字典在拆包的时候获得的是键值。
a,b,c = list1 print("a:%d b:%d c:%d" % (a,b,c)) # a:1 b:2 c:3 tuple1 = (1,2,3) a,b,c = tuple1 print("a:%d b:%d c:%d" % (a,b,c)) # a:1 b:2 c:3 dict1 = {"key1":"value1","key2":"value2","key3":"value3"} a,b,c = dict1 print(a) #key1 print(b) #key2 print(c) #key3
字典类型的关键字参数
- 在形参前写两个*,表示是字典类型的关键字参数;
- 该函数会接收多余的关键字参数,并以参数名为key,值为value,封装成字典;
- 当它与其他参数混合使用时,放在所有参数的最右边;
def func(a,**kwargs): print(a) # 1 print(kwargs) # {'b': 2, 'c': 3} func(1,b=2,c=3)字典类型的可变参数设计开发过程中用到的很少,他能够避免在团队开发的过程中因函数调用者在调用时多写的几个关键字参数而导致的错误。
实参前加*
当list、tuple、dict、str作为函数实参,并且形参个数与内部元素的个数一样时,可以在实参前加*。
def func(a,b): print(a) print(b) list1 = [1,2] tuple1 = (3,4) dict1 = {"key1":"value1","key2":"value2"} str1 = "qw" func(*list1) func(*tuple1) func(*dict1) func(*str1)