python函数可变参数 (Variable Argument) 的方法:使用*args和**kwargs语法。其中,*args是可变的positional arguments列表,**kwargs是可变的keyword arguments列表。并且,*args必须位于**kwargs之前,因为positional arguments必须位于keyword arguments之前

下面一个例子使用*args,同时包含一个必须的参数:

  1. def test_args(first, *args):
  2. print 'Required argument: ', first
  3. for v in args:
  4. print 'Optional argument: ', v
  5. test_args(1, 2, 3, 4)
  6. # result:
  7. # Required argument: 1
  8. # Optional argument:  2
  9. # Optional argument:  3
  10. # Optional argument:  4

下面一个例子使用*kwargs, 同时包含一个必须的参数和*args列表:

  1. def test_kwargs(first, *args, **kwargs):
  2. print 'Required argument: ', first
  3. for v in args:
  4. print 'Optional argument (*args): ', v
  5. for k, v in kwargs.items():
  6. print 'Optional argument %s (*kwargs): %s' % (k, v)
  7. test_kwargs(1, 2, 3, 4, k1=5, k2=6)
  8. # results:
  9. # Required argument:  1
  10. # Optional argument (*args):  2
  11. # Optional argument (*args):  3
  12. # Optional argument (*args):  4
  13. # Optional argument k2 (*kwargs): 6
  14. # Optional argument k1 (*kwargs): 5

*args和**kwargs语法不仅可以在函数定义中使用,同样可以在函数调用的时候使用。不同的是,如果说在函数定义的位置使用*args和**kwargs是一个将参数pack的过程,那么在函数调用的时候就是一个将参数unpack的过程了。下面使用一个例子来加深理解:

  1. # Use *args
  2. args = [1, 2, 3, 4, 5]
  3. test_args(*args)
  4. # results:
  5. # First argument:  1
  6. # Second argument:  2
  7. # Third argument:  3
  8. # Fourth argument:  4
  9. # Fifth argument:  5
  10. # Use **kwargs
  11. kwargs = {
  12. 'first': 1,
  13. 'second': 2,
  14. 'third': 3,
  15. 'fourth': 4,
  16. 'fifth': 5
  17. }
  18. test_args(**kwargs)
  19. # results:
  20. # First argument:  1
  21. # Second argument:  2
  22. # Third argument:  3
  23. # Fourth argument:  4
  24. # Fifth argument:  5

python 可变参数函数定义* args和**kwargs的用法的更多相关文章

  1. python可变参数类型 a,*args,**kwargs

    a - int *args --tuple **kwargs -- dict *args是非关键字参数,用于元组,**kw是关键字参数,用于字典 可变参数 在Python函数中,还可以定义可变参数.顾 ...

  2. Python之路 day3 函数定义 *args及**kwargs

    #!/usr/bin/env python # -*- coding:utf-8 -*- #Author:ersa import time # def logger(): # time_format ...

  3. Python可变参数函数用法详解

    来自:http://c.biancheng.net/view/2257.html 很多编程语言都允许定义个数可变的参数,这样可以在调用函数时传入任意多个参数.Python 当然也不例外,Python ...

  4. 【python】参数中的*args和**kwargs

    转自https://www.cnblogs.com/xuyuanyuan123/p/6674645.html#undefined 多个实参,放到一个元组里面,以*开头,可以传多个参数:**是形参中按照 ...

  5. Python可变参数*args和**kwargs

    本文我们将通过示例了解 Python函数的可变参数*args和 **kwargs的用法. 知识预备:Python 函数和 Python 函数参数 在Python编程中,我们定义一个函数来生成执行类似操 ...

  6. python可变参数*args, **kwargs

    python可变参数*args, **kwargs def foo(* args, ** kwargs): print ' args = ',  args print ' kwargs = ',  k ...

  7. python学习7—函数定义、参数、递归、作用域、匿名函数以及函数式编程

    python学习7—函数定义.参数.递归.作用域.匿名函数以及函数式编程 1. 函数定义 def test(x) # discription y = 2 * x return y 返回一个值,则返回原 ...

  8. Java可变参数 & Python可变参数 & Scala可变参数

    Java 可变参数的特点: (1).只能出现在参数列表的最后: (2)....位于变量类型和变量名之间,前后有无空格都可以: (3).调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体 ...

  9. Swift开发第十篇——可变参数函数&初始化方法顺序

    本篇分为两部分: 一.Swift中的可变参数函数 二.初始化方法的顺序 一.Swift中的可变参数函数 可变参数函数指的是可以接受任意多个参数的函数,在 OC 中,拼接字符串的函数就属于可变参数函数 ...

随机推荐

  1. 【sublime】sublime Text 3 javaScript代码自动提示插件&安装步骤 &启动Debug模式

    最近使用sublime开发node.js,但是sublime的js代码在书写的时候并没有提示功能. 因此搜到资料,用于安装代码自动提示插件. 1.打开sublime,然后快捷键Ctrl+Shift+P ...

  2. ubuntu 下安装nodejs以及pm2

    ubuntu 12.04服务器可以使用apt-get方式安装Node JS,但是,安装完后的版本为v0.6.12的版本,如果我们想要使用新一点的版本需要做如下配置: 1 2 3 4 apt-get i ...

  3. FragmentTransaction的commit的异步操作

    FragmentTransaction是异步的,commit()仅是相当于把操作加入到FragmentManager的队列,然后FragmentManager会在某一个时刻来执行,并不是立即执行.所以 ...

  4. linux的dd命令详解

    一.dd命令的解释 dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换. 块大小可以使用的计量表 参数注释: 1. if=文件名:输入文件名,缺省为标准输入stdin.即指定源文件.< ...

  5. python数据类型学习心得

    python中的数据类型 数字:整型,长整形,布尔型,浮点型,复数 整型:普通的整数,在32位的操作系统中范围在-2的-32次方到2的32次方-1,64位的操作系统则为-2的64次方到2的64次方-1 ...

  6. ASP.NET MVC学习---(五)MVC初体验

    经过之前n多的铺垫 我们已经大概了解了这个姓m名vc的家伙了 那么今天我们就来体验一把 怎么体验呢? 就来做一个小例子吧~ mvc增删改查的例子 数据库还是之前我们的老朋友 关系图: 表中的数据已填好 ...

  7. 【重点突破】—— 百度地图在React单页面应用中的使用

    前言:百度地图是网页中使用地图的常用第三方工具,这里结合React项目中学到的应用场景总结一些使用要点. 一.在网页中嵌入百度地图 搜百度地图开放平台,注册百度开发者账号 控制台:查看应用.创建应用( ...

  8. linux下c,c++头文件的路径

    一. C语言包含的目录: 二. C++包含的目录

  9. 系统重装 Windows_VHD_辅助处理工具说明文档1

    菜鸟也玩 VHD Windows VHD 辅助处理工具是一个用于创建.安装.维护 VHD 的辅助工具,把一个比较复杂的操作过程傻瓜化,使您轻松体验 VHD 的强大功能.您需要预备的就是一个准备装入 V ...

  10. 微信小程序 - 一种简写方式

    // 第一种 isOrder: function() { //code }, // 第二种 isOrders() { //code },