Python 的动态类型介绍

    • 变量的类型实在运行过程中自动决定的,而不是通过声明来决定的
    • 变量首次赋值时,创建它。之后的再次赋值会改变该变量的值

    2.类型的概念是存在于对象中而不是变量名中。变量名是通用的,它只是在特定时刻引用某个特定的对象而已。

    • 当变量出现在表达式中时,它会马上被当前引用的对象所代替
    • 任何变量名在使用前必须明确地赋值。用未赋值的变量会产生错误。

    3.每个表达式生成的结果,python都创建了一个新的对象去表示这个值

    4.Python对象缓存了不变的对象并对其进行复用,如小整数和小字符串。但是逻辑上看,每个表达式的结果值都是不同的对象,占用不同的内存。

    5.每个对象都有两个标准的头部信息:

    • 类型标志符:标识了该对象的类型(见第10条)

    7.多个变量名引用同一个对象时,称为共享引用:

    • 在共享引用中,对象的原地修改操作会影响到所有的引用该对象的变量
    • 共享引用的多个变量之间,比较的结果为True

    8.sys模块的getrefcount函数会返回对象的引用次数,如:

    10.查看对象的类型用type()函数,如:
    type()运行结果

    11.Python提供了几种方法来查看对象的属性以及详细信息:

    • dir(x):查看x所指对象的属性
    • help(x.attr):查看x所指对象的attr属性
    • help(x):查看x所指对象的详细信息

    12.None对象是一个特殊的Python对象,它总是False,一般用于占位。它有一块内存,是一个真正的对象。它不代表未定义,事实上它有定义。

    13.Python中,任何东西都是对象类型(见第10条),类型本身也是对象类型:

    • type(x)返回变量x指向对象的类型
    • isinstance(x,typename)用于测试x所指对象是否是typename类型
    • 调用类型名是对这些对象构造函数的调用,而不仅仅是类型转换
      任何东西都是对象类型

    14.基本上在代码中进行类型检查是错误的,着破坏了代码的灵活性,限制了代码的类型。Python代码不关心特定的数据类型,只关心接口,这就是Python的多态设计

    • 一个操作的意义取决于被操作对象的类型。同样的操作对不同的对象来说意义可能不同,前提是该对象支持该操作
    • 若对象不支持某种操作,则Python会在运行时检测到错误并自动抛出一个异常

    15.Python可以在旧版本中开启新版本的特性,只需用在模块文件中使用: