zoukankan      html  css  js  c++  java
  • 一文搞懂*argv和**kwargs

    大多刚接触Python的学员,会对*argv和**kwargs这两个魔法变量的用法产生困惑,今天本文将全面梳理下这两个小可爱的使用方法,让各位同学彻底搞懂它们的规则。

    这两个变量主要用户函数定义,有了它俩你可以将不定数量的参数传递给一个函数。这里,需要申明下:在写Python代码时,我们习惯将它俩写成*argv和**kwargs,这只是一个书写习惯,你也可以任性地用*var和**kvars来代替它们,要注意的是符号*和**是必须写的。

    函数在实际执行时,编程人员无法预先知道会被传入多少实参,这是不确定量,函数知道使用者会传多少个参数给它,幸好Python有*argv和**kwargs,有它俩帮我们统统接收。

    听起来是不是很简单?实际上就是这么简单,下面通过两个例子分别说明。

    1. *args的用法

    开宗明义,*args用来接收一个非键值对的不定数量的参数列表传给函数,记住,它接受的是列表。下面例子可以帮助理解:

    1 def test(normal_arg,*argv):
    2     print("the normal arg is :",normal_arg)
    3     for arg in argv:
    4         print("we can read from *argv:",arg)

    例1 ▲

    执行test('Python','C','Java','C++')之后,系统会有如下输出:

    1 the normal arg is :Python
    2 we can read from *argv:C
    3 we can read from *argv:Java
    4 we can read from *argv:C++

    通过这个例子,咱们就明白了*argv的所有用法,对它的疑惑也解决了,那么接下来让我们更进一步,来研究**kwargs。

    2.**kwargs

    **kwargs 用来接收不定长度的键值对,把它作为参数传递给⼀个函数。看清楚接收的是键值对。比如我们想要在⼀个函数⾥处理带名字的参数, 类似姓名=“张三”,这时就应该使⽤**kwargs。

    1 def show_keywords(**kwargs):
    2 for key,value in kwargs.items():
    3         print("{0}:{1}".format(key,value))

     例2 ▲

    上面定义了一个show_keywords()函数,用**kwargs来接收输入的键值对数据。例如实际运行的情况如下,就会得到如下结果。

     1 show_keywords(name='Mike',age=25) 2 name:Mike 3 age:25 

    通过上面两个简单的例子,我们分别了解了带一个'*'的*argv和带两个'**'的**kwargs的基本用法,事实上我们经常会将会arg,*argv,**kwargs这三种参数结合在一起使用的情况,那么请务必记住,在Python中它们是有先后顺序的,先arg,再*argv,最后写**kwargs,如下:

    def some_fun(arg,*argv,**kwargs):
    

      

    好了,这里对本章内容做下总结:

    1. *args 是用来接收一个参数列表,注意是列表。

    2. **kwargs 用来接收不定长度的键值对。

    3. 当函数里同时使用三种参数, 记得如下顺序:

       some_fun(args, *argv, **kwargs)

    HDC.Cloud 华为开发者大会2020 即将于2020年2月11日-12日在深圳举办,是一线开发者学习实践鲲鹏通用计算、昇腾AI计算、数据库、区块链、云原生、5G等ICT开放能力的最佳舞台。

    欢迎报名参会https://www.huaweicloud.com/HDC.Cloud.html?utm_source=&utm_medium=&utm_campaign=&utm_content=techcommunity

  • 相关阅读:
    modelsim(2)
    【管理心得之十六】我来吐槽 “面试”
    【管理心得之十五】没有100%的答案,只有70%认可的答案
    【管理心得之十四】团队中的“短板”,是你?还是他?
    【管理心得之十三】真正步入轨道的管理,是单调无味的、是枯燥死板的
    【管理心得之十二】拿什么来拯救你我的“协力人员” (后篇)
    【管理心得之十一】拿什么来拯救你我的“协力人员” (前篇)
    【管理心得之十】你是信息的发送方,应尽的责任你做到了吗?
    【管理心得之九】奉劝那些把组织“玩弄于鼓掌之间”的OL们。(别让组织看见此篇)
    【管理心得之八】通过现象看本质,小王和小张谁更胜任?
  • 原文地址:https://www.cnblogs.com/huaweicloud/p/12229515.html
Copyright © 2011-2022 走看看