用实例说明python的*args和**kwargs用法

yipeiwu_com6年前Python基础

先来看一个例子:

复制代码 代码如下:

>>> def foo(*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表示任何多个无名参数,它是一个tuple;**kwargs表示关键字参数,它是一个 dict。并且同时使用*args和**kwargs时,*args参数列必须要在**kwargs前,像foo(a=1, b='2', c=3, a', 1, None, )这样调用的话,会提示语法错误“SyntaxError: non-keyword arg after keyword arg”。如同所示:

相关文章

Django实现分页功能

Django实现分页功能

Django提供了一个新的类来帮助你管理分页数据,这个类存放在django/core/paginator.py.它可以接收列表、元组或其它可迭代的对象。 class Paginat...

python中pip的安装与使用教程

python中pip的安装与使用教程

在安装pip前,请确认win系统中已经安装好了python,和easy_install工具,如果系统安装成功,easy_install在目录python的安装盘(如C盘):\Python...

Windows下pycharm创建Django 项目(虚拟环境)过程解析

Windows下pycharm创建Django 项目(虚拟环境)过程解析

1. 背景 我在 Windows 下的 pycharm 直接创建 全新 Django 项目 会 pip 和其他报错 ,暂时解决不了,另外后续的多个项目只需要一套python 环境, 所以...

Django管理员账号和密码忘记的完美解决方法

Django管理员账号和密码忘记的完美解决方法

发现问题 看着Django的教程学习搭建网站,结果忘记第一次创建的账号和密码了。结果搭建成功以后,一直无法登陆到管理页面,进行不下去了。 如图所示: 在网上找了很多的方法都不行,最后使...

python实现在函数中修改变量值的方法

和其他语言不一样,传递参数的时候,python不允许程序员选择采用传值还是传引用。Python参数传递采用的肯定是“传对象引用”的方式。 实际上,这种方式相当于传值和传引用的一种综合。如...