zoukankan      html  css  js  c++  java
  • Python

    Python不定长参数 *args 和 **kwargs


    args的全称是arguments -- 参数

    kwargs的全称是keyword arguments -- 关键字参数


    *args:

    前面加个 * ,表示为可变参数,其中 * 是规定的,args可用其他名称替换,但一般习惯用 args 来表示。可变参数在传入函数后,被封装成一个 tuple 来进行使用。

    *args举例:

    例1:

    def numbers(*args):
        print(type(args))  # tuple
        for n in args:
            print(type(n))   # int
    numbers(1, 2, 3, 4)
    

    例2:

    def function(x, y, *args):
        print(x, y, args)
    
    function(1, 2, 3, 4, 5)
    

    结果:

    1 2 (3, 4, 5)
    

    用*args定义就可以引入,相当于定义了不定长度的函数,然后在程序中就可以多次使用。


    **kwargs :

    是一个字典,传入的参数以键值对的形式存放到字典里。
    关键字参数使用 kwargs 来标识,是规定,而kwargs可替换,它将不定长参数转换为 dict 传入函数。

    **kwargs举例:

    例1:

    def name(**kwargs):
        print(kwargs)
    
    name(a = 1, b = 2, c = 3)
    name(a = 1, b= 2, c = 3, d = 4)
    

    结果:

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

    例2:

    def foo(x, **kwargs):
        print(x, kwargs)
    
    foo(1, y = 1, a = 2, b = 3, c = 4)#将y=1,a=2,b=3,c=4以字典的方式给了kwargs
    

    结果:

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

    总结:

    1. *args 和 **kwargs 能使得函数接受可变数量的参数
    2. *args 代表了额外的位置参数,是一个元祖,**kwargs 代表了额外的关键字参数,是一个字典
    3. 实际上的关键语法是 * 和 **, args 和 kwargs 只是惯例而已。
  • 相关阅读:
    SQL Server 重新恢复自动编号列的序号
    AT指令
    wavecom短信猫常用AT命令
    Maven中-DskipTests和-Dmaven.test.skip=true的区别
    mybatis的插件,挺好支持下
    转java不同阶段的学习历程,总结的很不错,收了
    Java for循环和foreach循环的性能比较
    java synchronized 同步详解
    spring 中几种注解的说明
    zookeeper是什么?原理是什么?【转】
  • 原文地址:https://www.cnblogs.com/wwho/p/14457528.html
Copyright © 2011-2022 走看看