美文网首页
Python 中 * 和 ** 的使用场景

Python 中 * 和 ** 的使用场景

作者: welder77 | 来源:发表于2022-07-02 07:44 被阅读0次

    Python中由于没有指针的概念,所以 * 和 ** 有自己特殊的定义。

    下面就分别介绍下,这两个符号,在Python中的应用。

    首先是 *号,我们通过以下例子来解释其用法。

    1. 代表list中的剩余值
    a,b,*c = ['CANoe', 'SPY3', 'TSMaster', 'PCAN']
    #这里的*c 实际代表['TSMaster', 'PCAN']类型为list
    
    1. 代表多个不包含关键字的函数参数
    tools = ['CANoe', 'SPY3', 'TSMaster', 'PCAN']
    
    def myfunc(tools1,tools2,tools3,tools4):
        print(tools1,tools2,tools3,tools4)
    
    myfunc(*tools)
    
    #打印 'CANoe', 'SPY3', 'TSMaster', 'PCAN'
    

    接一下来是 **号。

    1. 代表多个包含关键字的函数参数,比如:
    busname ={"bus2":'CAN',  "bus1":'CANFD'}
    
    def myfunc(bus1="CAN", bus2="CANFD"):
        print(bus1,bus2)
    
    myfunc(**busname)
    
    #打印 'CANFD', 'CAN'
    

    这里需要注意, 字典中的键名需要和参数名完全一致,但顺序可以自由交换。

    1. 做函数参数使用
    def myfunc(arg, *args, **dictargs):
      print ("arg: ", arg)
      #打印args
      for value in args:
        print ("other args:", value)
      #打印dict类型的不定长参数 args
      for key in dictargs:
        print ("dictargs:" + key + ":" + bytes(dictargs[key]))
    
    myfunc(2022,'YFT','SWV',name='pudding',age='Forever 18')
    

    当 * 和 ** 写在函数参数部分时,Python会自动将传入参数与之匹配,这样参数的数量和关键字就不受限制了,函数体内必须去定义和解析这些参数。

    归结起来,我们可以把list或dict比作一个压缩包,而 * 和 ** 则是一个解压工具,可以快捷的将其中的内容展开。

    相关文章

      网友评论

          本文标题:Python 中 * 和 ** 的使用场景

          本文链接:https://www.haomeiwen.com/subject/dskhbrtx.html