Python 中 * 和 ** 的使用场景

2022-07-02  本文已影响0人  welder77

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比作一个压缩包,而 * 和 ** 则是一个解压工具,可以快捷的将其中的内容展开。

上一篇 下一篇

猜你喜欢

热点阅读