简述:

*args:    可变长度元组参数
    **kwargs: 可变长度字典参数

--------------------------------------------------------------------------------------------------

详解:
【*args】:可变长度元组参数

例1:

def hello_args(para1, *args):
        print("para1 :", para1)
        for arg in args:
            print("args:", arg)
     
        print("type(args):", type(args))
     
    hello_args('hello', 'this', 'is', 'mc.meng')

输出:

para1 : hello
    args: this
    args: is
    args: mc.meng
    type(args): <class 'tuple'>

可以看到,函数hello_args把第一个参数传给了位置参数(positional arguments)para1,把剩下的参数作为一个元组传给了*args。
【**kwargs】:可变长度字典参数

例2:

def hello_kwargs(para1, **kwargs):
        print("para1 :", para1)
        for key, value in kwargs.items():
            print("{0} = {1}".format(key, value))
        print("type(kwargs):", type(kwargs))
     
     
    hello_kwargs("hello", key1=1, key2=2, key3=3)

输出:

para1 : hello
    key1 = 1
    key2 = 2
    key3 = 3
    type(kwargs): <class 'dict'>

或者还你可以把直接传入一个字典:

例3:

def hello_kwargs(para1, **kwargs):
        print("para1 :", para1)
        for key, value in kwargs.items():
            print("{0} = {1}".format(key, value))
        print("type(kwargs):", type(kwargs))
     
     
    thiskw = {"key1": 1, "key2": "two", "key3": 3}
    hello_kwargs("hello", **thiskw)

输出:

para1 : hello
    key1 = 1
    key2 = two
    key3 = 3
    type(kwargs): <class 'dict'>

但请注意:实参thiskw前面的**
---------------------
作者:menghaocheng
来源:CSDN
原文:https://blog.csdn.net/menghaocheng/article/details/79891263
版权声明:本文为博主原创文章,转载请附上博文链接!

python3-可变长度参数函数(*args 和 **kwargs)的更多相关文章

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

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

  2. python中的魔法参数:*args和**kwargs

    python中的魔法参数:*args和**kwargs def foo(*args, **kwargs):print 'args = ', argsprint 'kwargs = ', kwargsp ...

  3. (转)python中的参数:*args和**kwargs

    def foo(*args, **kwargs):print 'args = ', argsprint 'kwargs = ', kwargsprint '---------------------- ...

  4. 非固定参数:*args和 **kwargs

    先看一个固定参数栗子: def func1(x, args): print(x, args) func1(1,22) ====================1 22 ================ ...

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

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

  6. Python3函数中特殊形参的使用:*、*args、**kwargs

    Python3函数中特殊形参的使用:*.*args.**kwargs ==用法1:不定长参数== 当函数需要的参数数量不确定的时候,可以使用*args 和 **kwargs , 所有的位置参数保存在* ...

  7. (3)什么是函数(函数的定义、形参、实参、默认形参、可变长函数args|kwargs)

    什么是函数 函数是指将一组语句的集合通过一个名字(函数名)封装起来,想要执行这个函数,只需调用其函数名即可 1.减少重复代码 2.使程序变的可扩展 3.使程序变得易维护 定义函数的语法 形参 主要的作 ...

  8. python3基础(七)函数基础

    Function 函数是一段组织好的能够实现特定功能或者逻辑的代码块,函数代码在文件执行时读入内存并不执行,在调用函数时执行,简单来说是把一段代码封装给一个函数名(可以用变量的概念去理解,即把一段代码 ...

  9. Python基础-*args和**kwargs魔法变量

    在学习Python时,总会遇到*args和**kwargs这两个魔法变量,那么它们到底是什么? 首先,并不是必须写成*args和**kwargs.只有变量前面的*(星号)才是必须的,你也可以写成*va ...

随机推荐

  1. JAVA EE------XML

    1.XML定义:在电子计算机中,标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种的信息比如文章等.它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语 ...

  2. type() 和 isinstance()区别

    a=111 # type() 返回数据类型 In: type(a)  Out: int In: print(type(a)) Out: <class 'int'> # isinstance ...

  3. soapUI的安装及破解

    1.下载安装包 SoapUI SoapUI-Pro-x64-5.1.2.exe Protection-4.6.jar scz.key 2.安装SoapUI-Pro-x64-5.1.2.exe 3.拷贝 ...

  4. CentOS 7 环境下GitLab安装及基本配置

    新实验室要求重新建设GitLab,对于我来讲,是第一次有机会当元老参与实验室的建设.下面分享我自己的实测经验: 1. 安装依赖软件并设置开机启动 yum install curlpolicycoreu ...

  5. python多个变量赋值

    a, b = 3, 4 c, d = 3, 4 a, b = b, a + b c = d d = c + d print(a, b, c, d) 输出: 4 7 4 8 因为a, b和b, a + ...

  6. videojs播放直播源rtmp时画面在左上角解决方案

    问题描述:https://stackoverflow.com/questions/30383135/videojs-live-rtmp-stream-player-and-video-size-iss ...

  7. PSP耗时

  8. 【Python】批量修改指定目录下所有文件的文件名/后缀

    [删除.txt文件的后缀] import os, shutil #rootdir = input("请输入文件路径(结尾加上/):") #fileList = os.listdir ...

  9. sync.Pool的使用

    一定要搞明白sync.Pool的正确用法,避免出现以下问题: kline := this.pool.Get() defer this.pool.Put(kline) kline.UnMarshal(d ...

  10. java中字符串"1999-10-01T00:00:00+08: 00" 转化为Date格式

    String oldStr = "1999-10-01T00:00:00+08: 00": SimpleDateFORMAT sdf = new SimpleDateFORMAT ...