• Python动态类型简单介绍


    动态类型以及它提供的多态性,无疑是Python语言简洁性和灵活性的基础。

     

    一、变量

    <1>变量创建

    一个变量a。当代码第一次给它赋值时就创建了它,之后的赋值将会改变已创建的变量名的值。

    <2>变量类型

    变量永远不会有不论什么的和它关联的类型信息或约束。变量原本是通用的。它仅仅是在一个特定的时间点,简单的引用了

    一下特定的对象而已。

    <3>变量使用

    当变量出如今表达式中。它会立即被当前引用的对象所替代(对象是有类型的)。此外全部的变量必须在使用前明白的

    赋值,使用未赋值的变量会错误发生。

     

    总而言之。变量在赋值时才创建。它能够引用不论什么类型的对象,而且必须在引用前赋值。

    比如  a = 3

    会经历三个步骤:

    <1>创建一个对象来代表值3

    <2>创建一个变量a

    <3>将变量与新的对象相连接

     

    因此可得

    对象是分配的一块内存。有足够的空间去表示它们所代表的值。

    变量是一个系统表的元素,拥有指向对象的连接的空间。

    引用是自己主动形成的从变量到对象的指针。

     

     

    二、类型属于对象。而不是变量

    对一个变量多次赋值得,

    >>> a = 3

    >>> a = 'hello'

    >>> a = 3.1415

    由此可见变量名是没有类型的,而类型是属于对象的。

    我们对a的改动仅仅是让它成为不同对象的引用。

    对象是有类型

    的。整数对象3包括值3以及一个头部信息,告诉python这是一个整数类型。

     

    三、对象的垃圾收集

    在python中,当一个变量名被赋予一个新的对象,之前的那个对象占用的空间就会被回收(假设它没有被其它变量引

    用)。称为垃圾收集。

    在内部python是这样来实现这一功能的:

    它在每一个对象中保持了一个计数器,记录了当前指向该对象的引用的数目,一旦这个计数器的值为0,这个对象的内

    存空间会自己主动回收。

    这意味着不须要考虑内存释放等问题,省去大量的基础代码。

     

    四、共享引用

    例:

    >>> a = 3

    >>> b = a

    此时a,b都成为对象3的一个引用,叫做共享引用。

    >>> a = 'hello'

    当a改变时。这时不会改变b的值,仅仅是a改动为'hello'的引用而已。

    给变量赋一个新的值。不是替换了原始的变量,而是让这个变量去引用全然不同的还有一个对象,效果就像又一次赋值一

    样,仅仅会影响被赋值的变量。

     

    五、共享引用和原处改动

    有一些对象和操作确实会在原处改变对象,比如之前写过的"Python<1>list",进行一些操作时不是生成一个新的对

    象,而是直接改动了自身引用的对象,此时共享引用须要加倍小心。假设你不想要这种现象发生。须要python拷贝

    对象。而不是创建引用。最常见的办法就是从头到尾的分片。

    >>> L1 = L2[:]

    此时对当中一个的改动不会影响还有一个。两个对象在不同的内存区域。

     

     

     

     

     

     

     

     

     

    參考<<learning python>>

     

     

     

     

     

  • 相关阅读:
    第15章-输入/输出 --- 字节流和字符流
    第15章-输入/输出 --- 理解Java的IO流
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
  • 原文地址:https://www.cnblogs.com/mqxnongmin/p/10646719.html
Copyright © 2020-2023  润新知