Python赋值魔法技巧
实验环境:
[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基础教程(第二版.修订版)
Python赋值魔法技巧的更多相关文章
- python 赋值魔法
序列解包: >>> x,y,z = 1, 2, 3>>> print(x, y, z)1 2 3 >>> a,b, *reset = [1,2,3 ...
- python之魔法方法介绍
1.1. 简介 什么是魔法方法呢?它们在面向对象的Python的处处皆是.它们是一些可以让你对类添加“魔法”的特殊方法. 它们经常是两个下划线包围来命名的(比如 __init__ , __lt__ ) ...
- <转> 30 个有关 Python 的小技巧
目录[+] 1.1 拆箱 1.2 拆箱变量交换 1.3 扩展拆箱(只兼容python3) 1.4 负数索引 1.5 切割列表 1.6 负数索引切割列表 1.7指定步长切割列表 1.8 负数步长切割列表 ...
- gj3 Python数据模型(魔法函数)
3.1 什么是魔法函数 类里面,实现某些特性的内置函数,类似 def __xx__(): 的形式. 不要自己定义XX,并不是和某个类挂钩的 class Company(object): def __i ...
- 30个有关Python的小技巧,给程序员的 30 个基本 Python 贴士与技巧
30个有关Python的小技巧 2013/07/04 · Python, 开发 · 4 评论 · Python 分享到: 66 本文由 伯乐在线 - Kevin Sun 翻译.未经许可,禁止转载!英文 ...
- python算法常用技巧与内置库
python算法常用技巧与内置库 近些年随着python的越来越火,python也渐渐成为了很多程序员的喜爱.许多程序员已经开始使用python作为第一语言来刷题. 最近我在用python刷题的时候想 ...
- 【转载】Python 代码调试技巧
https://www.ibm.com/developerworks/cn/linux/l-cn-pythondebugger/ Python 代码调试技巧 张 颖2012 年 5 月 03 日发布 ...
- 理解 python metaclass使用技巧与应用场景分析
理解python metaclass使用技巧与应用场景分析 参考: decorator与metaclass:http://jfine-python-classes.readthedocs. ...
- python基础===Python 代码优化常见技巧
Python 代码优化常见技巧 代码优化能够让程序运行更快,它是在不改变程序运行结果的情况下使得程序的运行效率更高,根据 80/20 原则,实现程序的重构.优化.扩展以及文档相关的事情通常需要消耗 8 ...
随机推荐
- Dungeon Master ZOJ 1940【优先队列+广搜】
Problem Description You are trapped in a 3D dungeon and need to find the quickest way out! The dunge ...
- 【Excle】8个快捷键
1.CtrL+ F1 一键切换功能区是否显示,几乎每天都要用N次. 2.Ctrl + N 一键插入新的工作簿,再不用通过新建 - 空白工作簿来操作了. 3.Shift + F2 如果单元格中没有批注会 ...
- MongoDB在Win10下的安装
原文地址:http://blog.csdn.net/polo_longsan/article/details/52430539 1.下载MongoDB在windows下的安装文件 首先去官网https ...
- linux rm -rf * 文件恢复记
手太快,肠子都毁清了.本来是删除一个文件 rm path/myfile.txt结果不知为何加了个*,变成了rm path/myfile.txt *赶紧ls,发现所有代码都化为了乌有,还没提交,还没备份 ...
- 关于Java静态代码块、初始化块、构造函数的调用顺寻问题?
public class ClassA { public ClassA(){ System.out.println("A 构造..."); } { System.out.print ...
- 【ubantu】在ubantu下如何对svn进行操作命令
ubantu对svn进行操作命令,如下所示: 1.将文件checkout到本地目录svn checkout path(path是服务器上的目录)例如:svn checkout svn://192.16 ...
- FMM和BMM的python代码实现
FMM和BMM的python代码实现 FMM和BMM的编程实现,其实两个算法思路都挺简单,一个是从前取最大词长度的小分句,查找字典是否有该词,若无则分句去掉最后面一个字,再次查找,直至分句变成单词或者 ...
- shell 获取文件名
1.获取文件名并修改文件名 2.$@ 遍历参数 3.赋值要加"" 4.if 判断注意空格 else后面不能跟then
- shell遍历文件目录,监听文件变化,拼接字符串
最近利用业余时间学习了shell 并做了个例子 实现的功能是 : 监听demo文件夹下的文件,只要新增了 .js的文件就把对应的文件名重组,拼接, 最后写入到demo.js里面. 文件结构如下 : ...
- linux授权某个用户对某个目录有读写的权限
针对特定的某一个用户设置文件或目录权限,用setfacl. 首先打开文件系统的acl功能,在挂载参数添加cal,再保存退出,比如/home分区: vim /etc/fstab /dev/sda2 /h ...