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 © Tedu.cn All Rights Reserved 京ICP备08000853号-56
京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有