序列解包
>>>x , y, z = 1, 2 , 3
>>>print x , y , z
1 2 3
>>>x , y = y , x
>>>print x , y , z
2 1 2
这两个例子表现出来的意思就是,序列解包。 讲多喝只的序列解开,然后放到变量的序列中。
>>>values = 1 , 2 ,3
>>>print values
(1,2,3)
>>>x , y ,z = values
>>>x
1
当函数或者方法返回元组(或者其他的序列或可迭代对象)时,这个特性尤其有用。假设需要获取
(删除)字典中任意的键-值对,可以使用popitem方法,这个方法将键-值作为元组返回。那么这个元组就可以直接赋值到两个变量中:
>>>scoundre = {'name':'Robin','girlfriend':'Marion'}
>>>key,value = scoundr.popitem()
>>>key
'girlfriend'
>>>value
'Marion'
它允许函数返回一个以上的值并且打包成元组,然后通过一个赋值语句很容易进行访问。所解包的序列中的元素数量必须和防止在赋值符号=左边的变量数量完全一直,否则Python会在赋值时引发异常。
链式赋值
链式赋值(chained assignment)是将用一个值赋给多个变量的捷径,它看起来有些像上节中的并行赋值,不过这里值处理一个值。
x=y=somefunction()
x=y
注意上面的语句和下面的语句不一定等价
x=somefunction()
y=somefunction()
增量赋值
>>>x=2
>>>x += 1
>>>x *=2
>>>x
6
对于其他数据类型也使用
>>>fnord = 'foo'
>>>fnord += 'bar'
>>>fnord *= liwliwentai
liliwellllsfks;fks;112122
>>>fnord
'foobarfoobar'