文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Python-变量对象引用

2023-01-31 06:37

关注

学习python首先要了解这三个的关系,变量、对象、引用、类型
这个要记住:类型存在于对象、变量通过引用链接上对象
变量在赋值的时候才创建,可以引用任何类型的对象、并且使用之前比许进行赋值。

<center>Python-变量对象引用

例如:
》》:a = 3
其实是完成了三个事情:

1.创建了一个int类型的对象3
2.创建了一个名为a的对象
3.将变量名a与int类型的对象3相连接

Python-变量对象引用

变量实际上是到对象内存空间的一个指针,变量是一个系统表的元素,拥有指向对象的链接空间。
对象是分配的一块内存,有足够的空间去表示他们所代表的的值
引用是自动形成的从变量到对象的指针

记住:每一个对象都有两个东西,对象类型和引用的计数器 这连个东西决定了是否自动回收。
对象的垃圾回收:每个对象保持了一个引用计数器,计数器记录了当前指向该对象的引用的数目,一旦这个计数器为0,这个对象的内存空间就会被自动回收。

import sys
print(sys.getrefcount(L)) 查看引用对少次

getrefcount(...)
getrefcount(object) -> integer
    Return the reference count of object.  The count returned is generally
    one higher than you might expect, because it includes the (temporary)
    reference as an argument to getrefcount().     

共享引用

思考:
a =  "3"
b = a
a = "spam"
这样输出b会是多少?          

Python-变量对象引用
Python-变量对象引用
变量a引用了spam对象的内存空间,所有值钱对象3肯定是还有引用的,那么谁用呢就是变量b

a = 3
b = a
a = a + 3

Python-变量对象引用

L = [1,2,3]
L2 = L
L = 24
此时L2依然不会变,如果写下面的语句替换L=24
L[0] = 24
这样就更改了L2的值,因为列表L引用的是对象、L[0]是在原处修改了引用值,L与L2是共享引用的,所以L修改了第一个对象的引用,L2也会改变
Python-变量对象引用
更好的理解共享引用

    ==,is 
    is 是比较实现应用的指针,如果不用变量名,引用相同指针,那么返回true。

Python-变量对象引用
Python-变量对象引用

第一个题:A和B最初共享与引用,但是后来B重新指向了另一个对象,所以不影响A
第二题:A和B最初共享引用,但是列表支持在原处修改,所以赋值B[0]就是在原处修改了重新指向别的地方的指针,那么A肯定也更改了,区别就在于B[0]就是在原处修改。
第三题,其实B=A[:]是创建了两个list,A和B,即创建了两个列表A,B,两个拥有相同值的不同列表对象,所以B[0]在原处修改,不会影响A

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯