最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Python二元赋值如何用 Python二元赋值实用技巧解析
时间:2019-10-25 编辑:袖梨 来源:一聚教程网
本篇文章小编给大家分享一下Python二元赋值实用技巧解析,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。
python支持类似于a += 3这种二元表达式。比如:
a += 3 -> a = a + 3 a -= 3 -> a = a - 3 a *= 3 -> a = a * 3 ...
在python中的某些情况下,这种二元赋值表达式可能比普通的赋值方式效率更高些。原因有二:
二元赋值表达式中,a可能会是一个表达式,它只需计算评估一次,而a = a + 3中,a要计算两次。
对于可变对象,可以直接在原处修改得到修改后的值,而普通的一元赋值表达式必须在内存中新创建一个修改后的数据对象,并赋值给变量
第一点无需解释。关于第二点,看下面的例子:
L = [1,2,3] L = L + [4] # (1):慢 L += [4] # (2):快 L.append(4) # (3):快,等价于(2) L = L + [5,6] # (4):慢 L += [5,6] # (5):快 L.extend([5,6]) # (6):快,等价于(5)
对于上面(1)和(4)的一元赋值表达式,先取得L,然后创建一个新的列表对象,将L拷贝到新列表对象中,并将4或5,6放进新列表对象,最后赋值给L。这个过程中涉及到了几个步骤:新分配内存、内存中列表拷贝、放入新数据。
而(2)(3)是等价的,(5)(6)也是等价的,它们都是直接在内存中的原始列表处修改,不会有拷贝操作,新建的数据对象仅仅只是一个元素。
按照理论上来说,确实二元赋值方式要效率高一些,但要注意的是,列表中保存的只是各元素的引用,所以拷贝列表也仅仅只是拷贝一点引用,这是微乎其微的开销。所以一元赋值和二元赋值的差距在这一点的性能上基本没差距,主要的差距还在于一元、二元赋值方式可能存在的表达式不同评估次数。
总的来说,使用二元赋值表达式通常可以作为可变对象赋值的一种优化手段。
相关文章
- Golang ProtoBuf的基本语法详解 10-20
- Python识别MySQL中的冗余索引解析 10-20
- Python+Pygame绘制小球代码展示 10-18
- Python中的数据精度问题介绍 10-18
- Python随机值生成的常用方法介绍 10-18
- python3解压缩.gz文件分析 09-27