Python 变量 ,对象,引用

动态类型

C,C++和Java是静态编译型语言,Python属于动态类型的语言,类型实在运行过程中自动决定的,而不是通过代码声明

变量,对象,引用

当我们做如下操作时

>>> a = 3

实际分为三个步骤:

  • 创建一个对象来代表值3
  • 创建一个变量a,如果它还没有创建的话
  • 将变量和新的对象3相连接

变量和对象保存在内存中的不同部分,并通过连接相关联,变量总是连接到对象,并且绝不会连接到其他变量,但是更大的对象可能连接到其他的对象。

Python中从变量到对象的连接叫引用,以具体的术语来讲:

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

从技术来讲,每个对象都有两个标准的头部信息:

  • 一个类型表示去标识这个对象的类型
  • 一个引用的计数器,用来决定是不是回收这个对象

类型属于对象,而不是变量

>>> a = 3
>>> a = 'Frank'
>>> a = 3.14

变量名没有类型,类型属于对象,而不是变量名,我们并没有改变变量a的类型,只是让变量引用了不同的类型的对象而已,实际上,python的变量就是在特定的时间引用了一个特定的对象

对象的垃圾收集

>>> x = 42
>>> x = 'Google'   #Reclaim 42 now(unless referenced elsewhere)
>>> x = 3.14        #Reclaim 'Google' now

Python中的每一个对象保持了一个引用计数器,计数器记录了当前指向该对象的引用的数目,一旦这个计数器被设置为0,这个对象的内存空间就会自动回收。
垃圾收集最直接、可感受到的好处就是,这意味着可以在脚本中任意使用对象而不需要考虑释放内存空间,在程序运行时,Python将会清理那些不再使用的空间。实际上,与C和C++这样的底层语言相比,省去了大量的基础代码。

共享引用

>>> a = 128
>>> b = a
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,670评论 11 349
  • http://python.jobbole.com/85231/ 关于专业技能写完项目接着写写一名3年工作经验的J...
    燕京博士阅读 7,754评论 1 118
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 12,174评论 6 13
  • 上大学时有个人对我影响很深远,那是我哥哥的朋友,具体叫什么名字我忘了。他从我哥那得知我手机号后主动打电话找我聊天,...
    妄想先生阅读 1,599评论 0 1
  • 有些人无论在怎么去接触,,哪怕多了再多的交集,不喜欢还是不喜欢,,有时也会想着要去尝试接触,可是渐渐在这段路上你会...
    如风一般的女子阅读 200评论 0 0

友情链接更多精彩内容