前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python中 *args 和 **kwargs 的含义?

Python中 *args 和 **kwargs 的含义?

作者头像
用户1564362
发布2019-11-12 16:15:20
1.1K0
发布2019-11-12 16:15:20
举报
文章被收录于专栏:飞总聊IT飞总聊IT

以下文章来源于程序IT圈,作者小猿同学

问:Python中 *args 和 **kwargs 的含义?

答:在python中,*args和**kwargs通常使用在函数定义里。*args 和 **kwargs 都允许你给函数传不定数量的参数,即使在定义函数的时候不知道调用者会传递几个参数。ps: *args和**kwargs只是一个大家都遵守的习惯,名字可以任意写的 。

1. *args例子

*args能够接收不定量的非关键字参数,会把位置参数转化为tuple(非键值对的参数组),例子如下面代码所示:

代码语言:javascript
复制
def func(*args):
    for i in args:
        print(i)
func(1,2,3,4)

运行结果:
1
2
3
4

2.**kwargs 例子

**kwargs允许你传递不定量个关键字参数。如果你需要在函数中定义不定量个命名参数,那么你就要使用**kwargs了,它会把关键字参数转化为dict(键值对参数组),例子如下面代码所示:

代码语言:javascript
复制
def func(**kwargs):
    for i in kwargs:
        print(i,kwargs[i])
func(a=1,b=2,c=3,d=4)

运行结果:
a 1
b 2
c 3
d 4

下面演示个错误的案例,看到有个错误:"func() takes 0 positional arguments but 4 were given" ,“未定义位置型参数,却收到了4个参数。” 也就是说,kwargs需要的是带名称的参数,而args代表位置型参数(无名称参数)。从英语上来说,kwargs多出来的kw其实就是keyword的意思,表示这是“键值对”参数,就像字典那样 。这样解释,*args 和 **kwargs 两者的区别,大家掌握了吗?

代码语言:javascript
复制
def func(**kwargs):
    for i in kwargs:
        print(i,kwargs[i])
func(1,2,3,4)

运行结果:
Traceback (most recent call last):
  File "F:/pyworkspace/hello.py", line 4, in <module>
    func(1,2,3,4)
TypeError: func() takes 0 positional arguments but 4 were given

如果对于参考答案有不认同的,大家可以在评论区指出和补充,欢迎留言!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-11-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 飞总聊IT 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. *args例子
  • 2.**kwargs 例子
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档