python的星号操作符和双星号操作符
* 迭代器解包操作,也称之为序列拆分操作符
** 字典解包操作,也称之为映射拆分操作。作为关键字参数传递给函数。
使用 *和 ** 的解包的好处是能节省代码量,使得代码看起来更优雅。
解包在英文里叫做 Unpacking,就是将容器里面的元素逐个取出来Python 中的解包是自动完成的,例如:
*,迭代器解包,序列拆分 操作符
** 字典接包操作,也称之音社拆分操作。作为关键字参数传递给函数。
任何可迭代对象都支持解包,可迭代对象包括元组、字典、集合、字符串、生成器等实现了__next__方法的一切对象。
字典解包的结果是key,value丢掉
多变量的赋值与交换,本质上也是自动解包过程
比如a, b = 1, 2
如果在解包过程中,遇到左边变量个数小于右边可迭代对象中元素的个数时该怎么办? 好比你们家有3口人,你老婆却买了4个苹果,怎么分配呢?
在 Python2 中,如果等号左边变量的个数不等于右边可迭代对象中元素的个数,是不允许解包的。但在 Python3 可以这么做了。
a, b, *c = [1,2,3,4]
a = 1
b = 2
c = [3,4]
a, *b, c = [1,2,3,4]
a = 1
b = [2,3]
c = 4
这种语法就是在某个变量面前加一个星号,而且这个星号可以放在任意变量,每个变量都分配一个元素后,剩下的元素都分配给这个带星号的变量
比如上面例子,在 Python2 中该怎么操作呢?
a, b, c = n[0], n[1:-1], n[-1] # 使用切片操作
0 Comments