前记
用了一段时间python语言,结合在开发中的使用,自己又有新的感悟,使用别人的框架是带着镣铐的舞蹈,思想在基础里早已体现。借此加深理解、温故知新。
小僧很想和同行的朋友沟通交流、并肩前行,志同道合的朋友看过来喽!
1
python使用对象模型来存储数据。构造任何类型的值都是一个对象。
所有python对象都拥有三个特性:身份、类型和值
- 身份
每一个对象都有唯一的身份标识自己,任何对象的身份可以使用内建函数id(obj)来得到。这个值可以被认为是对象的内存地址。 - 类型
对象的类型决定了该对象可以保存什么类型的值,可以进行什么样的操作,以及遵循什么样的规则。你可以用内建函数type(obj)查看对象类型。因为在python中类型也是对象,所以type()返回的是对象,而不是简单的字符串。 - 值
对象表示的数据项。
对象属性
某些python对象有属性、值或相关联的可执行代码。python用.标记法来访问属性。
标准类型
- 数字类型 整型、长整型、浮点型、布尔型、复数型
- 字符串类型
- 列表
- 元组
- 字典
这些类型是python内建的基本数据类型。
其他内建类型
- 类型
- Null对象none
- 文件
- 集合
- 函数
- 模块
- 类
类型
对象的一系列固有行为和特性必须实现定义好,从这个角度看,类型是保存这些信息的最佳位置。
>>> type(666)
<class 'int'>
>>> type(type(666))
<class 'type'>
>>> type(666)
<class 'int'>
>>> type(type(666))
<class 'type'>
所有类型对象的类型都是type,它也是所有python类型的根和所有python标准类型的默认元类。
None
python中的Null对象,它只有一个值,那就是None,不支持任何运算也没有内建方法。None没有什么有用的属性,他的布尔值总是False。
内部类型
- [代码对象]
- 帧
- 跟踪记录
- 切片
标准类型操作符
对象值的比较
不同于其他编程语言,多个比较操作可以在同一行进行,比较顺序为从左到右
>>> 3 < 4 < 7 #same as (3<4) and (4<7)
True
>>> 3 < 4 < 1
False
比较运算符是针对对象的值进行比较,不是对象本身。
对象身份比较
>>> a=b=10
>>> a is b
True
>>> a is not b
False
>>> id(a)==id(b)
True
a is b 等价于 id(a)==id(b)
python中是通过引用传递处理对象,每个对象天生具有一个计数器,记录自己的引用次数,这个数目表示有多少个变量指向该对象。python提供is和is not两个操作符来判断两个变量是否指向同一个对象。
布尔类型
布尔类型操作符都是python关键字,优先级顺序是:not>and>or