记录摘自《Python核心编程(第二版)》
个人站点:测试开发者
Python使用对象模型来存储数据。构造任何类型的值都是一个对象。
Python对象都拥有的三个特性:身份,类型和值
某些对象有属性、值或相关联的可执行的代码,可以用句点(.)来进行访问
python3中有以下类型:
通过type()可以查看特定对象的类型信息,如type(1),得到类型对象**
类型对象的类型是什么?
如 type(type(1))
得到
所有类型对象的类型都是type, 它是所有Python类型的根和所有Python标准类的默认元类
Null(或NoneType),只有一个固定值:None,它的布尔值总是False
下列对象的布尔值是False:
None,False,所有值为0的数,0,0.0,0.0+0.0j,空字符串,空列表,空元组,空字典等
代码对象是编译过的python源代码片段,它是可执行对象。通过调用compile()可以得到代码对象,可以被exec命令或eval()命令来执行
它是函数定义的核心,一个函数除了代码对象属性以外,还有函数名,文档字符串,默认参数以及全局命名空间等
帧对象表示Python的执行栈帧,包含Python解释器运行时所需要知道的所有信息。用到帧对象的一个地方是跟踪记录对象
当代码出错时,python就会引发一个异常,当异常发生时,一个包含针对异常的栈跟踪信息的跟踪记录对象被创建
当使用python扩展的切片语法时,就会创建切片对象。拓展的切片语法允许对不同的索引切片操作,包括步进切片、多维切片和省略切片。
用于扩展切片语法,起记号作用
是内建函数range()的兄弟版本,用于需要节省内存使用或range()无法完成的超大数据集场合
比较运算返回布尔值
数字类型根据数值的大小和符号进行比较,字符串按照字符顺序进行比较
多个比较操作符可以在同一行进行, 如 3<4<7 返回True
比较操作符:
python3 不支持 <> 风格的不等于运算
操作符 | 功能 |
---|---|
< | 小于 |
> | 大于 |
<= | 小于或等于 |
>= | 大于或等于 |
== | 等于 |
!= | 不等于 |
判断两个变量是否指向同一对象
a is b 等价于 id(a) == id(b)
如果返回True则是同一对象,否则不是
操作符 | 功能 |
---|---|
obj1 is obj2 | obj1 与 obj2 是同一对象 |
obj1 is not obj2 | obj1 与 obj2 不是同一对象 |
操作符 | 功能 |
---|---|
not a | a 的逻辑非 |
a and b | a与b 的逻辑与 |
a or b | a与b 的逻辑或 |
函数 | 功能 |
---|---|
cmp(a, b) | 返回整型i. i<0, 则ai>0, 则a>b i==0, 则 a == b |
repr(obj) | 返回一个对象的字符串表示 |
str(obj) | 返回对象适合可读性好的字符串标识 |
type(obj) | 得到一个对象的类型,并返回相应的type对象 |
看上去像函数,实际上是类
int(), float(), complex() | str() | list(), tuple() | type() |
---|---|---|---|
dict() | bool() | set(), frozenset() | object() |
classmethod() | staticmethod() | super() | property() |
file() |
一个能保存单个字面对象的类型为原子或标量存储
可以容纳多个对象的类型为容器存储
存储模型分类 | python类型 |
---|---|
标量/原子类型 | 数值,字符串 |
容器类型 | 列表、元组、字典 |
根据对象创建成功后,它的值是否可以更新,分为可变对象与不可变对象
更新模型分类 | python类型 |
---|---|
不可变类型 | 数字,字符串,元组 |
可变类型 | 列表、字典 |
三种访问模式: 直接访问,顺序访问和映射访问
访问模型分类 | python类型 |
---|---|
直接访问 | 数字 |
顺序访问 | 字符串、列表、元组 |
映射访问 | 字典 |