我们来讲讲python的数据类型

566 查看

Python的数据类型

标准类型
  • Integer整型 0
  • Boolean布尔型 False
  • Long integer长整型 0L
  • Floating point real number浮点型 0.0
  • Complex number复数型 0.0+0.0j
  • String字符串 ""
  • List列表 []
  • Tuple元祖 ()
  • Dictionary字典 {}
其他内建类型
  • 类型(type)
  • Null对象(None)
  • 文件
  • 集合/固定集合
  • 函数/方法
  • 模块
内部类型
  • 代码
  • 跟踪记录
  • 切片
  • 省略
  • Xrange

标准类型——Integer 整型 和Long integer长整型

整型: -2147483648 ~ 21474836487 (32bit机器上)
2^64次方 (这个和java和C不太一样,对于java和C来说整型不管是32bit还是64bit都只占用4个字节)
长整型:不管是32bit还是64bit,他的长度只取决于机器支持的虚拟内存的大小

标准类型——双精度浮点型

python里面没有float类型,python认为float类型的性价比不高,所以只支持double类型,如果需要使用精确的浮点型可以引用decimal模块。
每个浮点型占用8个字节,11位用于表示指数,1位用于表示符号,52位用于表示底

标准类型——复数

复数由一个实数和一个虚数组成
python里面的复数是这样表示的:

  • 虚数不能单独存在,他们总是和一个值为0.0的实数部分一起来构成一个复数
  • 复数由实数部分和虚数部分构成
  • 表示虚数的语法:real + imagj
  • 实数部分和虚数部分都是浮点型
  • 虚数部分必须有后缀 j或者J
    复数的内建属性
    conjugate()获得该复数的共轭复数对象
    | 属性| 描述|
    | -- |:--:|
    | num.real | 实数 |
    | num.imag | 虚数 |
    | num.conjugate() | 返回该复数的共轭复数 |

标准类型——Boolean布尔型

操作符 功能
not expr 逻辑非
expr and expr 逻辑与
expr or expr 逻辑或

其他内建类型——类型(type)

类型是保存对象一系列固有行为和特性的类型,所以python里面讲类型也定义成了对象。
我们可以通过type()函数得到特定的对象的类型信息
exp:type(54)
type(type(54))
类型对象的类型是所有python类型的根和所有python标准类的默认元类。

其他内建类型——Null对象(None)

None不支持任何运算,也没有任何的内建方法。通C语言里面的Null值。

内部类型——代码

代码对象是编译后的pyhton代码片段,是可执行对象,通过调用内部函数complie()可以得到代码对象,代码对象可以被exec命令或者eval()内建函数执行。
代码对象其实是函数的一个属性,函数出了有代码对象的属性之外还有一些其他函数必须的属性(包括函数名,文档字符串,默认参数,以及全局命名空间等等)

内部类型——帧

帧对象代表Python的执行栈帧,帧对象包含python解释器在运行时所需要知道的全部信息,他的属性包括向上一帧的链接,正在被执行的代码对象,以及本地和全局名称空间字典及当前指令等。每次函数调用都会产生一个新的帧,每一个帧对象都会相应的创建一个C栈帧。用到帧对象的一个地方是跟踪记录对象。

内部类型——跟踪记录

当异常发生的时候,一个包含针对异常的栈跟踪信息的跟踪记录对象会被创建,如果异常有自己的处理程序,处理程序就会访问并记录这个对象。

内部类型——切片对象

当使用python语法的时候,就会创建切片对象,扩展的切片语法允许对不同的索引切片操作,包括进步切片,多维切片和省略切片。
多维切片的语法 sequence[ start1 : end1 , start2 , end2 ]
省略切片语法 sequence[..., start1,end1]
切片对象也可以使用内建函数slice()来生成,步进切片允许利用第三个切片元素来进行步进切片
步进切片语法sequence[start1,end1,step]

内部类型——省略

省略对象用于扩展切片语法,起到记号的作用,这个对象在切片语法中表示省略号。类似Null对象None,省略对象有一个唯一的名字Ellipsis,他的布尔值始终未空。

内部类型——XRange

调用内建函数xrange()会生成一个XRange对象,xrange()函数和range()函数类似,用于节省内存使用或range()无法完成的超大数据场合。

python数据类型的一些通用的方法

  1. 对象值比较
    操作符
    == 等于
    != 不等于
    <> 不等于
    < 小于
    <= 小于等于
    /> 大于
    />= 大于等于

  2. 对象身份比较(is)
    操作符
    obj1 is obj2 obj1和obj2是同一个对象
    obj1 is not obj2 obj1和obj2不是同一个对象
    EXP:

    a = b = 2
    a is b (True)
    a is not b (False)

  3. 标准类型内建函数
    | 函数| 功能|
    | -- |:--:|
    | cmp(obj1,obj2) | 根据结果返回整型i |
    | repr(obj) | 返回一个对象的字符串表示 |
    | str(obj) | 返回对象合适可读性好的字符串表示 |
    | type(obj) | 得到一个对象的类型 |
    内建函数里面,str() repr() 和反引号操作符可以将对象的内容、类型、数值属性等转换成字符串
    repr和反引号操作可以通过eval()重新得到对象,str()无法用eval得到对象
    obj == eval(repr(obj))

4、type()和isinstance()