zoukankan      html  css  js  c++  java
  • python3进阶之*args与**kwargs用法

      *args 和 **kwargs 主要用于函数定义。 你可以将不定数量的参数传递给一个函数。不定的意思是:预先并不知道, 函数使用者会传递多少个参数给你, 所以在这个场景下使用这两个关键字。其实并不是必须写成*args 和**kwargs。  *(星号)才是必须的. 你也可以写成*ar 和**k. 而写成*args 和**kwargs只是一个通俗的命名约定.

      python函数传递参数的方式有两种: 
    位置参数(positional argument) 
    关键词参数(keyword argument)

     

    *args与**kwargs的区别,两者都是python中的可变参数。 
        *args表示任何多个无名参数,它本质是一个tuple; 
        **kwargs表示关键字参数,它本质上是一个dict; 

     

      如果同时使用*args和**kwargs时,必须*args参数列要在**kwargs前。

     

    示例1.

    def fun(*args,**kwargs):

        print('args=', args)

        print('kwargs=',kwargs)

    fun(1,2,3,4,A='a',B='b',C='c',D='d')

    输出:

    args= (1, 2, 3, 4)

    kwargs= {'A': 'a', 'B': 'b', 'C': 'c', 'D': 'd'}

    示例2:

    def mutil(name,*ar):
    print(name,"主人,你好")
    for item in ar:
    print("我的名字叫:",item)

    mutil("liuhu","xiaoyun","liuwei")
    # liuhu 主人,你好
    # 我的名字叫: xiaoyun
    # 我的名字叫: liuwei

    示例3:
    def love(**kwargs):
    for key,value in kwargs.items():
    print("{0}爱着{1}".format(key,value))
    love(name="liuhu",age=18)
    # name爱着liuhu
    # age爱着18


    示例4:
    def test(arg1, arg2, arg3):
    print("arg1:", arg1)
    print("arg2:", arg2)
    print("arg3:", arg3)

    args = ("two", 3, 5)
    test(*args)
    kwargs = {"arg3": 3, "arg2": "two", "arg1": 5}
    test(**kwargs)
    # arg1: two
    # arg2: 3
    # arg3: 5

    # arg1: 5
    # arg2: two
    # arg3: 3


    仙衣眠云碧岚袍,一襟潇洒,两袖飘飘。玉墨舒心春酝瓢,行也逍遥,坐也逍遥。
  • 相关阅读:
    构建之法读书笔记 第4章 两人合作
    ASE19 团队项目 alpha 阶段 Frontend 组 scrum9 记录
    ASE —— 第二次结对作业
    ASE —— 第一次结对作业
    高级软件工程 —— 第一周博客作业
    软工个人总结
    六月上团队项目心得
    团队项目心得
    结对编程收获
    结对作业——随机生成四则运算(Core 第7组)
  • 原文地址:https://www.cnblogs.com/max520liuhu/p/8921932.html
Copyright © 2011-2022 走看看