Python核心编程---读书笔记:第4章 Python对象

来源:互联网 发布:网络发行许可证 编辑:程序博客网 时间:2024/06/05 12:03

第4章 Python对象

4.1Python对象

有三特性:身份,类型和值

身份:对象有唯一标识的身份:id(),返回内存地址

类型:type()查看对象类型

 

 

4.1.1对象属性

标准类型(基本数据类型):数字,整型,布尔型,复数,字符串,列表,元组,字典

 

4.3其他内建类型

类型,Null对象(None),文件,集合,函数,模块,类

 

4.3.1类型对象和type类型对象

内建函数type():例如type(42)

类型对象的类型是type

 

4.3.2None,Python的Null对象

空对象只要有一个值:None,布尔值为False

 

4.4内部类型

代码,帧,跟踪记录,切片

代码对象:编译过的Python源代码片段,可执行对象

帧对象:Python执行栈帧

跟踪记录对象:引发异常会被捕获。

切片对象:包含步进切片,多维切片,省略切片

多维切片:sequence[start1:end1 , start2:end2]

省略号:sequence[…,start1 : end1]

切片对象可由内建函数slice()生成。

步进切片:sequence[起始索引 : 结束索引 : 进步值]

进步值若为-1,表示从后向前

def slice_test():    name = "dongfei"    name2 = name[: : -1] # iefgnod , -1表示进步值 seqence[start:end:step ],-表示从后向前    print(name2)    name3 = name[: : -2] # ifnd    print(name3)

 

省略对象: Null对象None,Ellipsis

XRange对象:xange()会生成XRange对象,用于大量数据迭代

目前被range()替代

 

4.5.2对象身份比较

用id(),实际就是判断两个对象的地址是否相同

 

#经过运算后相等的两个对象实际内存地址不同def id_test():    num1 = 4.3    num2 = 3 + 1.3    if id(num1) == id(num2) :        print("equal")    else:        print("not equal")

 

is标识符也可以用来判断是:

a is b

 

# is 标识符可以用于判断两个对象是否相同#注意两个整数指向同一个数值,内存地址相同;但是两个相同浮点数,地址不同【Python核心编程说的】,实际发现不对,两个相同浮点数地址也是相同的def is_test():    nums1 = [1,2,3]    nums2 = nums1    if nums1 is nums2:        print("equal")    else:        print("not equal")    a = 1.010    b = 1.01    print(id(a))    print(id(b))

 

4.5.3 布尔类型

not 优先级最高

 

4.6标准类型内建函数

cmp() , repr(), str() , type()

cmp(obj1,obj2):比较obj1和obj2,

返回值 < 0: obj1 <obj2                (一般为-1)

repr(obj) :返回对象的字符串表示

str(obj):返回对象可读性好的自复查un表示

type(obj):返回对象类型

 

# 3.x没有cmp.用operator.lt/le/ne/eq 等来代替def operator_test():    a = -1    b = 1    print(operator.lt(a, b))

 

eval():将字符串str当成有效比到时求值并返回结果

 

4.6.4python不支持函数重载,子集保证调用的是对象

类型检查: isinstance()

import types

if type(num) == types.IntType

或者
if isinstance(num , int)

 

4.7类型工厂函数

例如int(),type()实际是工厂函数,调用就生成类型的实例

 

4.8标准类型的分布

基本:核心类型

内建:python默认提供

数据:一般存储数据

对象:对象是数据和功能的抽象

原始:最底层数据存储

类型:数据类型

 

4.8.1存储模型

存储模型分为:

原子模型:数值,字符串

容器类型:列表,元组,字典

 

4.8.2更新模型

不可变类型:数字,自复查un,元组


0 0
原创粉丝点击