*args 表示任意个普通参数,调用的时候自动组装为一个tuple

**kwags 表示任意个字典类型参数, 调用的时候自动组装成一个dict

args和kwags是两个约定俗成的用法。

变长参数可以用*args来解包

>>> args = [3,6]
>>> list(range(*args))
[3, 4, 5]

>>> def f1(*args, **kwargs):
...    print args, kwargs
...
>>> l = [1, 2, 3]
>>> t = [4, 5, 6]
>>> d = {'a':7, 'b':8, 'c':9}

>>> f1()
() {}

>>> f1(1,2,3)
(1, 2, 3) {}

>>> f1(1,2,3,'hello')
(1, 2, 3, 'hello') {}

>>> f1(a=1,b=2,c=3)
() {'a': 1, 'c': 3, 'b': 2}

>>> f1(a=1,b=2,c=3,d='hello')
() {'a': 1, 'c': 3, 'b': 2, 'd': 'hello'}

>>> f1(1,2,3,a=1,b=2,c=3)
(1, 2, 3) {'a': 1, 'c': 3, 'b': 2}

>>> f1(*l)
(1, 2, 3) {}
>>> f1(*t)
(4, 5, 6) {}
>>> f1(**d)
() {'a': 7, 'c': 9, 'b': 8}

>>> f1(1,2,*t)
(1, 2, 4, 5, 6) {}
>>> f1(1,2,*l)
(1, 2, 1, 2, 3) {}

>>> f1(1,2,*t,s='world',**d)
(1, 2, 4, 5, 6) {'a': 7, 'c': 9, 'b': 8, 's': 'world'}

>>> def f2(arg1, arg2, *args, **kwargs):
...     print arg1, arg2, args, kwargs
...
>>> f2(1,2,3,a=1,b=2,c=3)
1 2 (3,) {'a': 1, 'c': 3, 'b': 2}
>>> f2(1,2,*t)
1 2 (4, 5, 6) {}
>>> f2(1,2,*t,s='hello',**d)
1 2 (4, 5, 6) {'a': 7, 'c': 9, 'b': 8, 's': 'hello'}

python function with variadic arguments or keywords(dict) 可变参数与关键字参数的更多相关文章

  1. python函数传入参数(默认参数、可变长度参数、关键字参数)

    1.python中默认缺省参数----定义默认参数要牢记一点:默认参数必须指向不变对象! 1 def foo(a,b=1): 2 print a,b 3 4 foo(2) #2 1 5 foo(3,1 ...

  2. Python中的*可变参数与**关键字参数

    1.定义了一个需要两个参数的函数 def print_str(first, second): print first print second if __name__ == "__main_ ...

  3. python的位置参数、默认参数、关键字参数、可变参数区别

    一.位置参数 调用函数时根据函数定义的参数位置来传递参数. #!/usr/bin/env python # coding=utf-8 def print_hello(name, sex): sex_d ...

  4. 洗礼灵魂,修炼python(21)--自定义函数(2)—函数文档,doctest模块,形参,实参,默认参数,关键字参数,收集参数,位置参数

    函数文档 1.什么是函数文档: 就是放在函数体之前的一段说明,其本身是一段字符串,一个完整的函数需要带有函数文档,这样利于他人阅读,方便理解此函数的作用,能做什么运算 2.怎么查看函数文档: func ...

  5. python函数中的位置参数、默认参数、关键字参数、可变参数区别

    一.位置参数 调用函数时根据函数定义的参数位置来传递参数. #!/usr/bin/env python # coding=utf-8 def print_hello(name, sex): sex_d ...

  6. Python 必选参数,默认参数,可变参数,关键字参数和命名关键字参数

    Py的参数还真是多,用起来还是很方便的,这么多参数种类可见它在工程上的实用性还是非常广泛的. 挺有意思的,本文主要参照Liaoxuefeng的Python教程. #必选参数 def quadratic ...

  7. python函数的参数-可变参数,关键字参数

    # -*- coding: utf-8 -*- #coding=utf-8 ''' @author: tomcat @license: (C) Copyright 2017-2019, Persona ...

  8. Python python 函数参数:关键字参数

    # 关键字参数 '''关键字参数代表传入任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict ''' def student(name,sex,**keywords): print(' ...

  9. 详解Python函数参数定义及传参(必备参数、关键字参数、默认可省略参数、可变不定长参数、*args、**kwargs)

    详解Python函数参数定义及传参(必备参数.关键字参数.默认可省略参数.可变不定长参数.*args.**kwargs) Python函数参数传参的种类   Python中函数参数定义及调用函数时传参 ...

随机推荐

  1. 非常酷的word技巧---删除行前的空格

    今天整理一篇文章的时间遇见一个问题,非常多行前的空格严重影响美观.搞计算机的就是爱折腾.于是做了各种尝试完美解决,以下把方法发布例如以下,事实上非常easy哦! 问题例如以下情况所看到的: 解决的方法 ...

  2. layui-概念-入门-总结

    layui教程:http://www.dosrun.com/layui/ 获得 Layui你可以在官网首页下载到 Layui 的最新版,也可以通过 GitHub得到Layui的开源包.目前只同步维护这 ...

  3. python多进程生成缩略图

    在img目录下7张图片 分别是 11.jpg 22.jpg 33.jpg 44.jpg 55.jpg 66.jpg 77.jpg #encoding=utf-8 import os import ti ...

  4. websocket-client connection( Long-lived )

    参考:https://pypi.python.org/pypi/websocket-client/ import websocket import thread import time def on_ ...

  5. C语言重要概念汇总

    作者:郭孝星 微博:郭孝星的新浪微博 邮箱:allenwells@163.com 博客:http://blog.csdn.net/allenwells Github:https://github.co ...

  6. 不安装Oracle客户端也能使用PL/SQL

    解压缩 instantclient_12_1 到 D:\Oracle\instantclient_12_1 在文件夹内建立目录, /NETWORK/ADMIN 在该目录下,新建文件tnsnames.o ...

  7. 使用OpenGL进行Mandelbrot集的可视化

    Mandelbrot集是哪一集?? Mandelbrot集不是哪一集!! 啊不对-- Mandelbrot集是哪一集!! 好像也不对-- Mandelbrot集是数集!! 所以--他不是一集而是数集? ...

  8. 嵌入式开发之davinci--- 8148/8168/8127 中的xdc 简介

    XDC是TI公司为嵌入式实时系统可重用软件组件(在XDC里被成为packages,以下成为包)制定的一套标准.它包括一些有用的工具,标准的API函数,静态配置文件和打包(packaging)操作.XD ...

  9. Android重写FragmentTabHost来实现状态保存

    近期要做一个类似QQ底部有气泡的功能,试了几个方案不太好.我想非常多开发人员使用TabHost都会知道它不保存状态.每次都要又一次载入布局.为了保存状态,使用RadioGroup来实现.状态是能够保存 ...

  10. iOS 10 的杂碎资料

    兼容iOS 10 资料整理笔记   1.Notification(通知) 自从Notification被引入之后,苹果就不断的更新优化,但这些更新优化只是小打小闹,直至现在iOS 10开始真正的进行大 ...