python基础知识之对象比较和拷贝

1、python对象的比较和拷贝

1.1对象比较(== 和 is)

==:只是比较两个对象的值是否相等,如果相等则返回true
is:比较对象的值及其引用,也就是其地址
对于整型数字来说,下面a is b为True的结论,只适用于-5到256
a = 10
b = 10

a == b
output: True
a is b
output:True
事实上,出于对性能的考虑,python内部会对-5-256维持一个数组,起到缓存的作用。这样,当每次创建一个此区间内的整型数字时,python都会从这个数组返回对应的引用,而不会开辟新的内存空间。

我们知道元组是不可变的,但元组可以嵌套列表,如果元组所嵌套的列表发生变化,则会引起元组的被动改变。这样也代表着元组本身也是发生了间接变化,之前用‘==’或则‘is’所取得的结果,就不再适用。

t1 = [1,2,[3,4]]
t1 = [1,2,[3,4]]
t1 == t2
True

t1[-1].append(5)
t1 == t2
False

1.2浅拷贝和深拷贝

浅拷贝

浅拷贝是指源对象和拷贝对象共用一份实体,仅仅是引用的变量不同。对任何一个对象的改动都会影响另一个对象

深拷贝

深拷贝是对源对象与拷贝对象相互独立,其中任何一个对象的改动都不会对另一个对象造成影响。

2、值传递和引用传递

2.1值传递

值传递时只是实际参数把其值传递给相应的形参,方法执行中形参值的改变不会影响实际参数的值

2.2 引用传递

引用传递也称地址传递,在方法调用时,实际上是把参数的引用(传的是地址,而不是参数的值)传递给相对应的形式参数,在方法执行过程中,对形参的操作实际上就是对实参的操作,形参的改变会影响实参的改变。

Guess you like

Origin blog.csdn.net/baidu_41797613/article/details/120228392