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 引用传递

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

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sharon@zhang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值