所谓的动态参数就是在写函数时,你可以传递1个参数,2个参数,3个参数甚至更多,同时也可以忽略它。
动态参数:一般有两种表示方法: *args 和**kwargs ,它的区别不是在于 args 和kwargs 这里可以替换成任意字母,这里最主要的区别是* 和**
动态参数跟默认参数一样,要写在位置参数的后面
def func(name,age,sex,class="1001",*args,**kwargs): pass
*args 和**kwargs 的区别:
- *args:1个* 表示接收的任意参数,调用的时候,会将实际参数一以元组的形式传给形式参数。如果参数是一个列表,将会把整个列表当做一个参数传递
例如:
def func(*args): print(args) func("a","b","c") func(["1","2","3"])
结果:
('a', 'b', 'c') (['1', '2', '3'],)
- 如上列表的结果,我的本意是想把列表中的数字分别输出,但是这里却是以一个参数的形式输出。如果需要把列表中的数字分别输出就要在前面加个*,这里可以理解为给列表脱外套
def func(*args): for arg in args: print(arg) list_1 = ["a","b","c"] func(*list_1)
- **kwargs:2个**表示接收的是任意键值对的关键字参数,这里调用的时候是以字典的形式传递给形式参数
例如:
def stu_info(**kwargs): print(kwargs) stu_info(name="lily",age=18,sex="famle")
结果: {'name': 'lily', 'age': 18, 'sex': 'famle'}