Python核心技术与实战——十二|Python的比较与拷贝
我们在前面已经接触到了很多Python对象比较的例子,例如这样的 a = 123 b = 123 a == b 或者是将一个对象进行拷贝 l1 = [1,2,3,4,5] l2 = l1 l3 = list(l1) 那么现在试一下下面的代码:先创建个列表l1,再把这个列表进行一份拷贝至l2,最后把l1添加一个元素,看l2会发生什么变化? >>> l1 = [1,2,3,4,5] >>> l2 = l1 >>> l1.append(6) >>> l2 [1, 2, 3, 4, 5, 6] 是不是l2也变了!这里就引申出来一个概念:浅拷贝(shallow copy)和深拷贝(deep copy) 在对拷贝的概念进行分析前,我们先看一看下面的知识: ‘is’VS‘==’ is和==是我们在进行对象比较的时候常用的方法,简单的来说: == 操作是用来比较两个对象的值是否相等,比如下面的例子,就表示了变量a和b所指向的值是否相等 >>> a = 123 >>> b = 123 >>> a == b True 而is操作是用来判定对象的身份标识是否是相等的,也就是说判定两个对象是否指向同一内存地址。 在python中,每个对象都有一个ID,我们可以通过函数id()来获得 >>>a = 123 >>>id(a) 2011987232 因此,is操作就是判定两个对象的id是否相等