实验环境:

[root@localhost ~]# python -V
Python 2.7.5

  

1.序列解包

多个赋值操作可以同时进行

>>> x,y,z = 1,2,3
>>> x
1
>>> print y,z
2 3

交换两个或者多个变量也是可以的

>>> x,y = y,x
>>> print x,y,z
2 1 3

这里所做的事叫做序列解包或者递归解包--将多个值的序列解开,然后放到变量的序列中。更形象的表示:

>>> values = 1,2,3
>>> values
(1, 2, 3)
>>> x,y,z = values
>>> print x,y,z
1 2 3

当函数或者方法返回元组(或者其他序列或者可迭代对象)时,这个特性显得更为有用。假设需要获取(和删除)字典中任意的键-值对,可以使用popitem方法,这个方法将键-值对作为元组返回。那么这个元组就可以直接赋值到两个变量中。

>>> addresslist = {'Wang':'123456','Ni':'23456'}
>>> key,value = addresslist.popitem()
>>> key
'Ni'
>>> value
'23456'

序列解包允许函数返回一个以上的值并且打包成元组,然后通过一个赋值语句很容易进行访问。所以解包的序列中的元素数量必须和放置在赋值符号=左边的变量数量完全一致。否则Python在赋值的时候就会引发异常。

>>> x,y,z = 1,2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: need more than 2 values to unpack
>>> x,y,z = 1,2,3,4
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: too many values to unpack

2.链式赋值

链式赋值是将同一个赋值给多个变量的捷径。有点像上面的并行赋值,不过只处理一个值

>>> x=y=[1,2,3]
>>> print x,y
[1, 2, 3] [1, 2, 3]

等价于

y=[1,2,3]

x=y

3.增量赋值

将赋值表达式中x=x+1的表达式运算符(本例中是+)放置在赋值运算符=的左边,写成x+=1。这种写法叫做增量赋值,对于*、/、%等标准运算符都适用。

>>> x=2
>>> x+=1
>>> x
3
>>> x*=2
>>> x
6

对于其他数据类型也同样适应。只要二元运算符本身适用这些数据类型即可。

>>> fnord='foo'
>>> fnord+='bar'
>>> fnord
'foobar'
>>> fnord*=2
>>> fnord
'foobarfoobar'

增量赋值可以让代码变得更加紧凑和简练。

参考:

Python基础教程(第二版.修订版) 

 

  

最新文章

  1. indexOf、instanceOf、typeOf、valueOf详解
  2. rest api参数与content-type
  3. Android 网络开发之WIFI
  4. asp.net微信jsapi支付
  5. Translucent Bar Android状态栏自定义颜色
  6. Daily Scrum 11.4
  7. C#连接数据库的四种方法
  8. HDU2888 Check Corners
  9. IE css expression(表达式)
  10. 如何测试sql语句性能,提高执行效率
  11. 自动工作负载库(Automatic Workload Repository,AWR)
  12. Java 注解机制
  13. 使用DBCP连接池对连接进行管理
  14. struts2对于处理JSON的配置
  15. 例子:web版坦克大战1.0
  16. How To: Run Tapestry5 On JBoss 6/7
  17. ILRuntime官方Demo笔记
  18. zabbix3.4 端口和进程监控配置
  19. Java的if判断对象为null时,null放在比较运算符的左边还是右边较好?
  20. Linux 查看文件被那个进程写数据

热门文章

  1. mysql_affected_rows的注意点
  2. AutoWare 使用
  3. asp.net core mvc视频A:笔记2-3.高级数据绑定
  4. brew Error: Formulae found in multiple taps
  5. 什么是CouchDB?
  6. 一个方便的图片载入框架——ImageViewEx
  7. hdu - 5033 - Building(单调栈)
  8. CSDN开源夏令营 基于Compiz的switcher插件设计与实现之前期准备 git的简单使用
  9. 蒙特卡洛方法计算圆周率的三种实现-MPI openmp pthread
  10. e.target与e.currentTarget对比