python对象的三个特性
身份
对象的唯一标识, 可被认为是该对象的内纯地址, 极少用到, 可通过id()来获得.
类型
决定该对象可以保存什么类型的值, 可以进行什么操作, 及遵循什么样的规则, 可通过type()来查看
值
对象表示的数据项
以上三个特性在创建对象的时候就被赋值, 除了值以外, 其它两个特性都是只读的.
对象类型
type类型对象
所有类型对象的类型都是type, 它也是所有python类型的根和所有python标准类的默认元类
Null对象
Null对象是一种特殊的对象, 只有一个None值, 不支持任何运算也没有任何内建方法, 也没用什么有用的属性, 布尔值总为False
布尔值: 所有标准对象均可用于布尔测试,同类型的对象之间可以比较大小。每个对象天生具有布尔 True 或 False 值。空对象、值为零的任何数字或者 Null 对象 None 的布尔值都是 False。
内部类型
包含代码, 帧, 跟踪记录, 切片等. 一般不会直接和这些类型打交道
标准类型运算符
对象值运算符
比较运算符用来判断同类型对象是否相等, 所有内建类型均支持比较运算, 数字类型根据数值大小比较, 字符串依据字符序列值比较, 返回布尔值True或者False
对象身份比较
对象可以通过引用被赋值到另外一个变量
foo1 = foo2 = 4.3
#一个值为4.3的数字被创建, 然后这个对象的引用被赋值给foo1和foo2这两个变量
foo1 = 4.3
foo2 = foo1
#python通过传递引用来处理对象, foo2成为4.3一个新的引用, foo1和foo2指向同一个对象
foo1 = 4.3
foo2 = 4.3
#首先一个数值对象被创建, 然后赋值给foo1. 然后第二个数值对象被创建并赋值给foo2. 两个对象值大小相同, 但是是两个独立的对象
is和is not
python提供了 is 和 is not 运算符来测试两个变量是否指向同一个对象
python会缓存常用整数对象和字符串对象, 造成我们认为python应该创建新对象时, 它却没有创建新对象的假象
a = 1
b = 1
id(a) == id(b) #True
布尔类型运算符
not, or, and布尔逻辑运算符都是 Python 关键字, not 运算符拥有最高优先级, 只比所有比较运算符低一级, and 和 or 运算符则相应的再低一级