5.2.1Python序列解包
Posted by 撒得一地 on 2016年3月5日 in python教程
上一篇: 5.1.2Python从模块导入函数
下一篇: 5.2.2Python链式赋值
下一篇: 5.2.2Python链式赋值
赋值语句的例子有很多,其中包括对变量和数据结构成员的(比如列表中的位置和分片以及字典中的槽)赋值。但赋值的方法还不止这些。比如,用序列解包的方法给多个变量同时进行赋值操作:
>>> x,y,z = 1,2,3 >>> print(x,y,z) 1 2 3
Python序列解包的方法非常有用,还可以用它交换两个(或更多个)变量也是没问题的,如:
>>> x,y,z = 1,2,3 >>> print(x,y,z) 1 2 3 >>> x,y = y,x >>> print(x,y,z) 2 1 3
事实上,这里所做的事情叫做序列解包(sequence unpacking)或可选代解包一一将多个值的序列解开,然后放到变量的序列中。更形象一点的表示出来就是:
>>> values = 1,2,3 >>> values (1, 2, 3) >>> x,y,z = values >>> x 1
当函数或者方法返回元组(或者其他序列或可迭代对象)时,这个特性尤其有用。假设需要获取(和删除)字典中任意的键一值对,可以使用popitem方法,这个方法将键一值作为元组返回。那么这个元组就可以直接赋值到两个变量中:
>>> person = {'name':'psz','age':18} >>> key,value = person.popitem() >>> key 'age' >>> value 18
它允许函数返回一个以上的值并且打包成元组,然后通过一个赋值语句很容易进行访问。所解包的序列中的元素数量必须和放置在赋值符号(=)左边的变量数量完全一致,否则Python会在赋值时引发异常,比如:
>>> a,b,c = 1,2 Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: need more than 2 values to unpack
上一篇: 5.1.2Python从模块导入函数
下一篇: 5.2.2Python链式赋值
下一篇: 5.2.2Python链式赋值