码迷,mamicode.com
首页 > 编程语言 > 详细

python动态类型

时间:2017-09-21 19:32:24      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:psd   vbs   db2   dcs   tms   cst   otc   部分   utc   

python是动态语言。不需要事先声明变量类型,同一变量可以被赋值为不同的对象类型。

变量、对象、引用

  • 变量创建
    python的变量不需要声明,当代码第一次给其赋值时就创建它。

  • 变量赋值
    举例说明,赋值语句 “a = 3”。一般而言赋值过程如下:

    1. 创建被赋值的对象,即在内存中开辟一块空间,用于保存对象的信息。本例来说是一个整数对象3.
    2. 如果变量名之前没有被定义过,创建变量名,’a’。如果变量名存在,则跳过。
    3. 建立变量名和被赋值对象之间的引用。引用类似于c语言的指针。
      以上过程适用于所有的变量赋值。
  • 变量类型
    变量本身不包含任何类型约束信息,类型的概念存在于它引用的对象中而不是变量名中。

  • 变量使用
    当变量出现在表达式中时,它会马上被引用的对象所代替。所有的变量在使用前必须被赋值,使用未赋值的变量会引起“NameError”异常(变量必须先被创建才能使用)

  • 对象
    每个对象有两个标准的头部信息:标识对象类型的类型标志符,一个引用计数器。一个对象可能同时被多个变量名引用,引用计数器记录了对象被引用的次数。对于大部分的对象而言,当引用计数器的值为0时,对象所在的内存空间会被回收。

  • 共享引用
    多个变量名同时引用同一个对象。

python的内置核心对象类型

不可变类型

不可变类型,对象一旦创建不可修改。整数类型 int 、浮点数类型 float、复数类型 complex、字符串类型 str、元祖类型 tuple 、集合类型 set,都属于不可变类型。下面通过变量赋值的过程理解型不可变对象:

a = 1 #建立变量a到对象1的引用
b = a #建立变量b到对象1的引用, 共享引用
a = 2 #因为int类型的对象1不可修改,所以新建对象2,并且建立变量a到它的引用
      #现在变量a、b分别引用不同的对象。

 

过程如图:

技术分享

可变类型

可变类型指对象可原地修改的类型。比较典型的:列表类型 list、字典类型 dict。
以list为例,list是任意对象的有序集合,如下图所示:

技术分享
list对象中每个元素都是一个对象引用。通俗理解,list对象的元素有点类似变量,同样可更改。

python动态类型

标签:psd   vbs   db2   dcs   tms   cst   otc   部分   utc   

原文地址:http://www.cnblogs.com/wadirum/p/7569964.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!