python中应该经常看到*和**,这两个运算符有时可能有点神秘,特别是它们作为前缀运算符时,有时知道就是这么写,但要说清楚为什么这么写,就有些傻傻说不上了。这不是咱们的错,是python把*和**用坏了,为它们赋予了太多用途,本文就小说下,*和**都能做些什么。
本文不讨论*和**作为中缀运算符(算术运算符),也不重点涉及可变参数和关键字参数
一、传递参数
如果要打印list_nums中的每一个元素,这种应该最直接
但如果这样写呢
这就是*在调用函数时,可以将可迭代的参数中所有元素作为独立参数进行函数调用,不用关心实际有多少个参数
仔细体会下这个列子
**运算符也有类似的用法
二、指定关键字参数
定义如下函数:
这样调用函数是不行的
必须指定关键字参数
再看下面这个函数
这样调用也是不行的
必须这样调用(fillvalue关键字参数不能少)
这样就可以强行指定函数中某个位置必须是指定的参数
python内置函数sorted就是使用的此方法
三、元组解包
这样就可以完成类似切片的操作
获取命令行参数也可以这样做了
四、迭代转存
通常会这么写
但+只能操作部分数据类型而且必须是相同类型的对象,*没有任何限制,如下,转存list和一个generator为set
** 也有类似操作
合并两个dict
领取专属 10元无门槛券
私享最新 技术干货