python用对象模型来储存数据,也就是我们说的python一切皆对象。
python 对象都有拥有三个特性:身份,类型,值。
身份: id()可以被认为是该对象的内存地址。
类型:type()
值:对象表示的数据项
标准类型
数字: 整型 integer 长整型 long integer 浮点型 floating porting real number 负数型 complex number
布尔型: boolean
字符串 string
列表 list
元组 tuple
字典 dict
布尔值:
下列对象的布尔值是false:
* None
* false
* 所有值为0的数
* 0(整型)
* 0.0(浮点型)
* 0L(长整型)
* 0.0+0.0j(复数)
* ” ” (空字符串)
* [](空列表)
* ()(空元组)
* {}(空字典)
除了上面列出来的 都是true
内部类型
- 代码对象:编译过的python源代码片段,是可执行片段。 通过compile()得到。
- 帧:python的执行栈帧,帧对象包含python解释器在运行时所需要知道的所有信息。它的属性包括指向上一帧的链接,正在执行的代码对象,本地及全局名称空间字典及当前指令等。每次调用函数调用产生一个新的帧,每一个帧对象都会相应创建一个c栈帧,下面的跟踪记录对象就能用得到帧对象。
- 跟踪记录: 异常发生的时候,一个包含针对异常的栈跟踪信息的跟踪记录对象被创建。如果一个异常有自己的处理程序,处理程序就可以自己访问这个跟踪记录对象。
- 切片:使用python的切片语法的时候,就会创建切片对象。扩展的切片语法。
也可以由内建对象slice()来完成。
多维切片:sequence[start1:end1,start2:end2]
省略切片:sequence[…,start1:end1]
步进切片:增加第三个元素 sequence[起始索引:结束索引:步进值]
>>>foostr = 'abcde'
>>>foostr[::-1]
'edcba'
>>>foostr[::-2]
'eca'
>>>foolist = ["123","abc","456"]
>>>foolist[::-1]
["456","abc","123"]
- 省略对象: 用于切片语法中,起记号作用。这个对象在切片语法中表示省略号。类似null对象none,省略对象有个唯一名字ellipsis,布尔值始终为true。
- xrange: 是用于需要节省内存或者range()无法完成的超大数据集合。
标准类型操作符
- 比较:
<小于
>大于
<= 小于等于
>= 大于等于
==等于
<> 或 != 不等于 - 对象身份比较: is is not
a is b 等同于:
a(id) == b(id) - 布尔类型:not and or
- 标准类型内建函数
- cmp(obj1,obj2) 比较obj1 和 obj2。
i < 0 if obj1 < obj2
i > 0 if obj1 > obj2
i = 0 if obj1 = obj2 - repr(obj) or `obj` 返回一个对象的字符串表示。 相对于str来说可以重新获取该对象。 obj == eval(repr(obj))
- str(obj)返回对象适合可读性好的字符串表示。得到可读性较好的字符串,更适合输出之类的。
- type(obj)得到一个对象的类型并返回相应的type对象。
- isinstance 判断一个参数的类型 如 isinstance(num,int)
- 类工厂函数内建转换函数
- int() type() list()等都成了工厂函数。也就是看起来是个函数其实是类,你在调用他们时候,实际上是产生了该类型的一个实例。
- cmp(obj1,obj2) 比较obj1 和 obj2。
标准类型的分类