详解Python的*args和 **kwargs

*args表示任何多个无名参数,它是一个tuple;**kwargs表示关键字参数,它是一个dict。   

def fun(*args, **kwargs):    print 'args = ', args    print 'kwargs = ', kwargs    print '###'if __name__ == '__main__':    foo(1,2,3,4)    foo(a=1,b=2,c=3)    foo(1,2,3,4, a=1,b=2,c=3)    foo('a', 1, None, a=1, b='2', c=3)

登录后复制

输出结果如下:

args =  (1, 2, 3, 4) kwargs =  {} ###args =  () kwargs =  {'a': 1, 'c': 3, 'b': 2} ###args =  (1, 2, 3, 4) kwargs =  {'a': 1, 'c': 3, 'b': 2} ###args =  ('a', 1, None) kwargs =  {'a': 1, 'c': 3, 'b': '2'} ###

登录后复制

可以看到,这两个是python中的可变参数。

注意:同时使用*args和**kwargs时,必须*args参数列要在**kwargs前,像foo(a=1, b=’2′, c=3, a’, 1, None, )这样调用的话,会提示语法错误“SyntaxError: non-keyword arg after keyword arg”。

立即学习“Python免费学习笔记(深入)”;

def fun2(param1, *args, **kwargs):    print 'param1 = ', param1    print 'args = ', args    print 'kwargs = ', kwargs    print '###'fun2(1, 2, 3, 4, a=1,b=2,c=3)

登录后复制

输出结果:

param1 =  1args =  (2,3,4)kwargs =  {'a': 1, 'c': 3, 'b': 2} ###

登录后复制

1赋值给了param1, 剩下的2,3,4给了*args, 其他的都赋值给了**kwargs

还有一个很漂亮的用法,就是创建字典:

def kw_dict(**kwargs):    return kwargsprint kw_dict(a=1,b=2,c=3)

登录后复制

结果:

{'a':1, 'b':2, 'c':3}

登录后复制

其实python中就带有dict类,使用dict(a=1,b=2,c=3)即可创建一个字典了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2283226.html

(0)
上一篇 2025年2月27日 20:01:27
下一篇 2025年2月18日 06:55:43

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Python随机生成验证码的两种方法

    python随机生成验证码的方法有很多,今天给大家列举两种,大家也可以在这个基础上进行改造,设计出适合自己的验证码方法 方法一: 利用range方法,对于range方法不清楚的同学,请参考文章《python开发的range()函数》 # -…

    编程技术 2025年2月27日
    200
  • Python中的ThreadLocal变量

    werkzeug 作为一个 wsgi 工具库,由于一些方面的考虑,并没有直接使用python内置的threadlocal类,而是自己实现了一系列local类。包括简单的local,以及在此基础上实现的localstack,localmana…

    2025年2月27日
    200
  • Python 执行js的2种解决方案

    第1种方案 SpiderMonkey是Mozilla项目的一部分,是一个用C语言实现的JavaScript脚本引擎, 该引擎分析、编译和执行脚本,根据JS数据类型和对象的需要进行内存分配及释放操作;利用该引擎可以让你的应用程序具有解释Jav…

    编程技术 2025年2月27日
    200
  • 格式化和清洗数据的 Python 工具包

    世界很杂乱,来自现实世界的数据也一样杂乱。近来一份调查报告显示数据科学家60%的时间都花在整理数据上。不幸的是,57%的人认为这是工作中最头疼的一部分。 整理数据非常消耗时间,不过也有许多工具被开发出来让这关键的一步变得稍微可以忍受。Pyt…

    2025年2月27日
    200
  • 数据集合: list,tuple,dict,set

    python的数据集合有四种,即list,tuple,dict,set 列表,List List是Python中一种有序的可变的数据集合。它的元素可以被添加或则删除。List的表示方法是用一个[]将元素包含起来,元素间用,号分隔。例如[2,…

    编程技术 2025年2月27日
    200
  • python学习笔记-定义函数

    python中定义函数的关键词是def,例如定义一个叫my_function的函数我们可以这么定义, 其中括号内的x,y为传入的参数。 def my_function():    # function body 登录后复制 返回值 函数可以…

    编程技术 2025年2月27日
    200
  • Python: 你不知道的 super

    super() 的入门使用 在类的继承中,如果重定义某个方法,该方法会覆盖父类的同名方法,但有时,我们希望能同时实现父类的功能,这时,我们就需要调用父类的方法了,可通过使用 super 来实现,比如: class Animal(object…

    编程技术 2025年2月27日
    200
  • python递归函数

    函数就像一个盒子,将相关的一些功能打包成一个函数,以供调用。函数内部可以调用其他函数,也可以调用这个函数自身。如果一个函数在内部调用函数自身,那么这个就是递归函数。我们举一个简单的例子。数学中我们知道100的阶乘,100!=1009998&…

    编程技术 2025年2月27日
    200
  • python:Centos6下python2.7的安装

    1)编译安装python2.7 [root@mysql-master ~]# python -VPython 2.6.6查看python的版本信息(之前的yum是通过yum安装的)[root@mysql-master src]# wget …

    编程技术 2025年2月27日
    200
  • Python 字典操作

    今天开始打算每周都写点东西来记录自己的学习,自己mark一下。 字典是python中最灵活的内置数据结构,字典是无序的集合(字典的顺序随机是为了快速执行键查找),python采用最优化的散列算法来寻找键;字典类似于java中的map,但是没…

    编程技术 2025年2月27日
    200

发表回复

登录后才能评论