Python培训
400-996-5531
今天的python培训为大家带来的是*args 和 **kwargs 两个参数的用法,这两个参数对于刚接触 Python 的人会另他们很迷惑,如果你也经常搞混淆,那么本文是拯救你的福音!
其实对于这两个参数来说,只有 * 是最重要的,你也可以起名叫 *var 和 **vars,名字无所谓是什么,但是惯例一般是用 *args 和 **kwargs。
使用 *args
*args 和 *kwargs 用在函数定义中。*args 接收多个参数,如果你不知道函数输入的参数数量,可以直接用 *args。
请看下面的例子:
1#args-and-kwargs.py 2def test_args(a,*args): 3print('first param is',a) 4for arg in args: 5print('next param is',arg) 6 7test_args(1,'python','hello','hi')
输出:
1bogon:quxihuan-python-code alex$ python3 args-and-kwargs.py 2first param is 1 3next param is python 4next param is hello 5next param is hi
使用 **kwargs
**kwargs 允许你传入函数的参数的形式为键值,例如 name=alex,可以传递多个键值。
1def test_kwargs(**kwargs): 2if kwargs is not None: 3for key,value in kwargs.items(): 4print('{}={}'.format(key,value)) 5 6test_kwargs(name='alex',age=18)
输出:
1name=alex 2age=18
使用 *arg 和 **kwargs
*args 和 *kwargs 可以一块使用:
1def test_args_and_kwargs(*args,**kwargs): 2print(args,type(args)) 3print(kwargs,type(kwargs)) 4 5test_args_and_kwargs('a','b',name='alex',age=17)
输出:
1('a','b')<class 'tuple'> 2{'name':'alex','age':17}<class 'dict'>
可以看到,args 的类型是元组,kwargs 的类型是字典。
函数调用使用 *arg 和 **kwargs
可以使用 *args 和 **kwargs 解析一个列表或者字典到函数指定的参数中。
1def test_args(a1,a2): 2print('a1:',a1) 3print('a2:',a2) 4 5p1=('hello',18) 6test_args(*p1) 7 8print() 9d1={'a1':'hello','a2':18} 10test_args(**d1)
输出:
1a1:hello 2a2:18 3 4a1:hello 5a2:18
*args 是按次序把一个列表解析到函数的参数中。注意列表的参数数量不能大于或者小于函数参数的数量,否则编译器会报类型错误的异常。
**kwargs 是通过对比参数的名称和字典的键名称,如果相等,赋值给函数的参数。注意字典的键值和参数必须匹配,否则会报类型错误的异常。
恭喜你阅读完了本文,相信你对*args 和 **kwargs 两个参数的用法有所掌握,多练习练习,你就会非常熟练,好了,你还有python相关的其他疑问吗?欢迎你来达内python培训机构进行咨询。
免责声明:内容和图片源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。
填写下面表单即可预约申请免费试听! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!
Copyright © 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有
Tedu.cn All Rights Reserved