更多课程 选择中心


Python培训

400-996-5531

python编程*args 和 **kwargs 两个参数用法讲解

  • 发布:Python培训
  • 来源:趣喜欢编程
  • 时间:2018-06-12 13:40

今天的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培训机构进行咨询。

免责声明:内容和图片源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

预约申请免费试听课

填写下面表单即可预约申请免费试听! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:送你入门python的三大神器,在你进阶的路上助你一臂之力!
下一篇:各个维度深入剖析python中整型不会溢出的问题

如何运用Python编程处理大数据?用Python编程处理大数据的技巧是什么?

Python面向对象编程的知识点都在这了!

Python的高级特征及用法(部分)

听说这些Python知识,很少有人知道!

Copyright © 2023 Tedu.cn All Rights Reserved 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有

选择城市和中心
黑龙江省

吉林省

河北省

湖南省

贵州省

云南省

广西省

海南省