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数据类型的一些通用的方法
对象值比较
操作符
== 等于
!= 不等于
<> 不等于
< 小于
<= 小于等于
/> 大于
/>= 大于等于对象身份比较(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)
- 标准类型内建函数
| 函数| 功能|
| -- |:--:|
| cmp(obj1,obj2) | 根据结果返回整型i |
| repr(obj) | 返回一个对象的字符串表示 |
| str(obj) | 返回对象合适可读性好的字符串表示 |
| type(obj) | 得到一个对象的类型 |
内建函数里面,str() repr() 和反引号操作符可以将对象的内容、类型、数值属性等转换成字符串
repr和反引号操作可以通过eval()重新得到对象,str()无法用eval得到对象
obj == eval(repr(obj))
4、type()和isinstance()