python支持相似于a += 3这种二元表达式。好比:python
1 a += 3 -> a = a + 3 2 a -= 3 -> a = a - 3 3 a *= 3 -> a = a * 3 4 ...
在python中的某些状况下,这种二元赋值表达式可能比普通的赋值方式效率更高些。缘由有二:app
第一点无需解释。关于第二点,看下面的例子:ide
在学习过程当中有什么不懂得能够加个人 python学习交流扣扣qun,784-758-214 群里有不错的学习视频教程、开发工具与电子书籍。 与你分享python企业当下人才需求及怎么从零基础学习好python,和学习什么内容 1 L = [1,2,3] 2 L = L + [4] # (1):慢 3 L += [4] # (2):快 4 L.append(4) # (3):快,等价于(2) 5 6 L = L + [5,6] # (4):慢 7 L += [5,6] # (5):快 8 L.extend([5,6]) # (6):快,等价于(5)
对于上面(1)和(4)的一元赋值表达式,先取得L,而后建立一个新的列表对象,将L拷贝到新列表对象中,并将4或5,6放进新列表对象,最后赋值给L。这个过程当中涉及到了几个步骤:新分配内存、内存中列表拷贝、放入新数据。工具
而(2)(3)是等价的,(5)(6)也是等价的,它们都是直接在内存中的原始列表处修改,不会有拷贝操做,新建的数据对象仅仅只是一个元素。性能
按照理论上来讲,确实二元赋值方式要效率高一些,但要注意的是,列表中保存的只是各元素的引用,因此拷贝列表也仅仅只是拷贝一点引用,这是微乎其微的开销。因此一元赋值和二元赋值的差距在这一点的性能上基本没差距,主要的差距还在于一元、二元赋值方式可能存在的表达式不一样评估次数。学习
总的来讲,使用二元赋值表达式一般能够做为可变对象赋值的一种优化手段。开发工具