Python学习笔记-Python对象
来源:互联网 发布:在线美工兼职 编辑:程序博客网 时间:2024/04/24 16:10
第四章Python对象
1、python对象
所有python对象都有三个特性:身份、类型、值
身份:对象的唯一标识,可以认为是对象的内存地址。使用id()函数可以获得,很少使用;
类型:决定python对象保存什么类型的值,进行什么类型的操作,遵循什么规则,用type();
值:对象表示的数据值。
在对象创建的时候,对象的身份、类型、值就被赋值,身份和类型是只读的,值可以改变。
>>> a = 3
>>> id(a)
31237160L
>>> type(a)
<type 'int'>
>>> a = '3'
>>> id(a)
36172904L
>>> type(a)
<type 'str'>
如果对象的值支持更新操作,就可以改变,否则就是只读的。对象的值是否可以更改称为对象的可改变性。
2、标准类型(基本数据类型)
z 数字(int(有符号整数)long(长整数) bool(布尔值)float(浮点值) complex(复数)其中,int ,long, bool 是整数类型)
z 整型
z 布尔型
z 长整型
z 浮点型
z 复数型
z 字符串
z 列表
z 元组
z 字典
3、其他内建类型
z 类型
z Null 对象 (None)
z 文件
z 集合/固定集合
z 函数/方法
z 模块
z 类
(1)类型对象和type类型对象
>>> type(3)
<type 'int'>
>>> type(type(3))
<type 'type'>
<type 'int'>是一个类型对象,他告诉你3是个int型的对象。那类型对象的类型是什么呢?<type 'type'>
是type,所有类型对象的类型都是type。
(2)Null对象:他只有一个值:None,且None的bool值总是False.和None类型接近的就是C中的void,None类型的值和C中的NULL值相似。
核心笔记:布尔值
所有标准对象均可用于布尔测试,同类型的对象之间可以比较大小。每个对象天生具有布
尔 True 或 False 值。空对象、值为零的任何数字或者Null对象None的布尔值都是 False。
下列对象的布尔值是 False。
z None
z False (布尔类型)
z 所有的值为零的数:
0 (整型)
0.0(浮点型)
0L (长整型)
0.0+0.0j (复数)
z "" (空字符串)
z [](空列表)
z ()(空元组)
z {}(空字典)
值不是上面列出来的任何值的对象的布尔值都是True,例如 non-empty、non-zero等等。
用户创建的类实例如果定义了nonzero(__nonzero__())或 length(__len__())且值为0,那么它们的布尔值就是False。
5、标准类型运算符
(1)对象值比较
多个比较操作可以在同一行上进行,求值顺序为从左到右。
>>> 3 < 4 < 7 # same as ( 3< 4 ) and ( 4 < 7 )
True
>>> 4 > 3 == 3 # same as ( 4> 3 ) and ( 3 == 3 )
True
>>> 4 < 3 < 5 != 2 < 7
False
(2)对象身份比较
e.g1:
fool1 = fool2 = 4.3
含义:它与以往的多重赋值不同。一个值为4.3的数字类型的对象被创建,然后这个对象的引用被赋值给fool1和fool2,现在fool1和fool2指向同一块内存区域
e.g2:
fool1 = 4.3 fool2 = fool1
一个值为4.3的数字对象被创建并且指向fool1,在执行fool2 = fool1时,fool2被指向fool1指向的同一个对象,因为python通过传递引用来处理对象。它的示意图和上图一样。
(3)对象就象一个装着内容的盒子。当一个对象被赋值到一个变量,就象在这个盒子上
贴了一个标签,表示创建了一个引用。每当这个对象有了一个新的引用,就会在盒子上新贴一张标签。当一个引用被销毁时,这个标签就会被撕掉。当所有的标签都被撕掉时,这个盒子就会被回收。
(4) Python提供了is和is not 运算符来测试两个变量是否指向同一个对象
a is b 等价于 id(a) == id(b) 功能:a 和 b是同一个对象
a is not b 等价于id(a) != id(b) 功能:a 和 b不是同一个对象
>>> a = b = 3
>>> print a is b
True
>>> a = 5
>>> b = a
>>> print a is b
True
6、标准类型内建函数
函数 功能
cmp(obj1, obj2) 比较obj1和obj2,根据结果返回整数i
若obj1 <obj2 –> i < 0
若obj1 >obj2 –> i > 0
若obj1==obj2 –> i == 0
repr(obj)或’obj’ 返回一个对象的字符串表示
str(obj) 返回对象可读性好的字符串表示
type(obj) 得到对象的类型,并返回相应的type对象
函数详解:
type() 接受一个对象做为参数,并返回它的类型。它的返回值是一个类型对象。
str() 致力于生成一个对象的可读性好的字符串表示,它的返回结果通常无法用于eval()求值,但很适合用于print 语句输出。
repr() 和 `` 做的是完全一样的事情,它们返回的是一个对象的“官方”字符串表示。
type函数与isinstance函数:
#!/usr/bin/env python
def displayNumType(num):
print num, 'is',
if isinstance(num, (int, long, float,complex)):
print 'a number of type:',type(num).__name__
else:
print 'not a number at all!!'
displayNumType(-69)
displayNumType(9999999999999999999999L)
displayNumType(98.6)
displayNumType(-5.2+1.9j)
displayNumType('xxx')
/////////////////////////////////////////////////
def displayNumType(num):
print num, "is",
if type(num) == type(0):
print 'an integer'
elif type(num) == type(0L):
print 'a long'
elif type(num) == type(0.0):
print 'a float'
elif type(num) == type(0+0j):
print 'a complex number'
else:
print 'not a number at all!!
8、标准类型分类
(1)存储模型:
分类 Python类型
标量/原子类型 数值(所有的数值类型),字符串(全部是文字)
容器类型 列表、元组、字典
(容器存储:可容纳多个对象的类型)
(2)更新模型:
分类 Python类型
可变类型 列表, 字典
不可变类型 数字、字符串、元组
(3)访问模型
根据访问数据的方式进行分类。有直接存取、顺序、映射。
分类 Python类型
直接访问 数字
顺序访问 字符串、列表、元组
映射访问 字典
对非容器类型可以直接访问;
序列类型是指容器内的元素按从0开始的索引顺序访问。一次可以访问一个元素或多个元素,也就是大家所了解的切片(slice)。字符串、列表和元组都归到这一类,字符串也是。
映射类型,容纳的是哈希键-值对的集合。
(4)分类的目的:
为什么要对同样的数据类型再三分类呢?首先,我们为什么要分类?因为 Python 提供
了高级的数据结构,我们需要将那些原始的类型和功能强大的扩展类型区分开来。另一个原因就是这有助于搞清楚某种类型应该具有什么行为。举例来说,如果我们基本上不用问自己“列表和元组有什么区别?”或“什么是可变类型和不可变类型?”这些问题的时候,我们也就达到了目的。最后,某些分类中的所有类型具有一些相同的特性。一个优秀的工匠应该知道他或她的工具箱里都有哪些宝贝。
(5)标准类型分类:
数据类型
存储模型
更新模型
访问模型
数字
Scalar(原子)
不可更改
直接访问
字符串
Scalar
不可更改
顺序访问
列表
Container(容器)
可更改
顺序访问
元组
Container
不可更改
顺序访问
字典
Container
可更改
映射访问
9、不支持的类型
(1)char或byte。Python没有char或byte类型来保存单一字符或8比特整数,可以使用长度为1的字符串来表示。
(2)指针。
练习:
4.1:身份、类型、值
4.2:不可更改指对象的值是不可更改的。可更改的有:列表和字典;不可更改的有:数字、字符串、元组。
4.3:字符串、列表、元组是按照顺序访问。它的元素有序存放,顺序访问的索引是按照数字偏移量取值;映射类型的元素是无序存放,它容纳的是哈希-键值对的集合。
4.4:接受一个对象做参数,返回它的类型。返回的是一个类型对象。
4.5:str输出的是一个可读性较好的字符串。它的返回结果通常无法用于eval()求值,但很适合用于print 语句输出。repr返回的是一个官方的字符串表示。Repr等价有反引号。
4.6:type(a) is type(b) 等价于id(type(a)) == id(type(b))
4.8:
数据类型
存储模型
更新模型
访问模型
列表
Container(容器)
可更改
顺序访问
元组
Container
不可更改
顺序访问
4.9:true true false
本文为xyw_Eliot原创,转载请注明出处:http://blog.csdn.net/xyw_eliot/article/details/8295965- Python学习笔记-Python对象
- Python对象学习笔记
- python对象学习笔记
- Python学习笔记 03 Python对象
- Python学习笔记(四)Python对象
- Python学习笔记4:Python对象
- Python 学习笔记【文件对象】
- python 学习笔记--面向对象
- Python学习笔记_Python对象
- Python学习笔记----面向对象
- Python学习笔记1--运行Python&&python对象类型介绍
- Python学习笔记之面向对象
- Python学习笔记(2)--面向对象
- python 学习笔记 -- 类与对象
- python学习笔记十 类文件对象
- python学习笔记13--类和对象
- Python学习笔记(九):面向对象
- Python学习笔记6:循环对象
- 自定义对话框组件
- virtualbox+ubuntu设置共享文件夹
- C++各大有名库的介绍——网络通信
- 实时更新ListView
- java web项目配置tomcat连接池的那些搓事
- Python学习笔记-Python对象
- 命令行 Ant 调用build.xm 内存溢出问题
- TreeView 的节点拖拽
- 第23节 封装
- Activity有四种加载模式:standard(默认), singleTop, singleTask和 singleInstance
- warning:ISO C90 forbids mixed declarations and code
- 视频解码基础知识
- 在Javascript 中读取C# Dataset实例
- Android activity的生命周期