所谓的动态参数就是在写函数时,你可以传递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'],)
如上列表的结果,我的本意是想把列表中的数字分别输出,但是这里却是以一个参数的形式输出。如果需要把列表中的数字分别输出就要在前面加个*
,这里可以理解为给列表脱外套
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
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'}