美文网首页python学习
Python 变量 ,对象,引用

Python 变量 ,对象,引用

作者: 秦汉邮侠 | 来源:发表于2015-09-17 08:13 被阅读135次

    动态类型

    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
    

    相关文章

      网友评论

        本文标题:Python 变量 ,对象,引用

        本文链接:https://www.haomeiwen.com/subject/rtjbcttx.html