Python编程整理:*与**在形参和实参中的应用
Python编程整理:*与**在形参和实参中的应用
1)*与**实现的功能是可变长度传参
可变长度指的是传参的个数不确定
其核心做法是用一个形参来接受溢出的位置实参和关键字实参,比如:
def func(a, *b): print(a, b) func(1, 2, 3) # 1 (2, 3)
这个*b就是用来接受溢出的位置实参的,溢出实参会以元组的形式传给b。
又比如:
def func(a, **b): print(a, b) func(1, x=2, y=3) # 1 {'x': 2, 'y': 3}
这个**b是用来接受关键字实参的,会以字典的形式传给b
而在python中,约定俗成使用*args和**kwargs来为可变长度形参起名
2)在非形参中,*与**都有着打散数据的作用。
list1 = [1, 2, 3] dic1 = {'a': 1, 'b': 2, 'c': 3} def func1(a, b, c): print(a, b, c) func1(*list1) func1(**dic1) # 1 2 3 # 1 2 3
**后面必须跟字典,*后面更可被for循环的类型,比如列表,字符串甚至字典。
3)**和*在形参中可以混用,**必须在*之后,比如:
def func(*args, **kwargs): print(args) print(kwargs) func(1, 3, 5, 7, 'hello', text='hw', x=3, y=4) # (1, 3, 5, 7, 'hello') # {'text': 'hw', 'x': 3, 'y': 4}
浙公网安备 33010602011771号