python参考手册--第3章类型和对象
1.对象的身份、类型、值
(1)身份:对象在内存中位置的指针,地址值,
>>> a = [1,2,3,4,5]
>>> id(a)
48497328
>>> id(a[0])
37465112
>>> id(a[1])
37465100
>>> id(a[2])
37465088
>>> id(a[3])
37465076
>>> id(a[4])
37465064
(2)类型
>>> a = [1,2,3,4,5]
>>> type(a)
<type 'list'>
>>> type(a[1])
<type 'int'>
isinstance:
>>> isinstance(a,list)
True
(3)值
print看
2.引用计数和垃圾回收
(1)引用计数
a = [1,2,3,4,5] #创建list对象,a是list对象的引用
b = a #list对象的引用加1
del a #list对象的引用减1
b = 2 #该list对象的引用再减1
可以通过sys.getrefcount() 函数获得对象的引用计数:
>>> import sys
>>> a = [1010,1023,1394]
>>> sys.getrefcount(a)
2
>>> b = a
>>> sys.getrefcount(b)
3
>>> sys.getrefcount(a)
3
(2)垃圾回收
当一个对象的引用计数归零时,将会被垃圾收集回收。
(3)不可变对象的赋值,会创建副本;而可变对象的赋值不会创建副本
不可变对象赋值:
>>> a = 20
>>> b = a
>>> b is a
True
>>> b = 30
>>> a
20
可变对象赋值:
>>> a = [1,2,3,[4,5]]
>>> b = a
>>> b is a
True
>>> b[0] = 10
>>> b
[10, 2, 3, [4, 5]]
>>> a
[10, 2, 3, [4, 5]]
list的反向遍历:
for i in lista[::-1]
通过引用修改对象,该对象的其他引用也会被修改:
>>> import sys
>>> a = [1010,1023,1394]
>>> sys.getrefcount(a)
2
>>> b = a
>>> sys.getrefcount(b)
3
>>> sys.getrefcount(a)
3
>>> b[1] = 99999
>>> b
[1010, 99999, 1394]
>>> a
[1010, 99999, 1394]
>>> b is a
(4)list、dict的浅拷贝和深拷贝:
浅拷贝将创建一个新对象,对象的元素是原对象元素的引用。
>>> a = [1,2,3,[4,5]]
>>> b = list(a)
>>> b is a
False
>>> b[1] = 1000
>>> b
[1, 1000, 3, [4, 5]]
>>> a
[1, 2, 3, [4, 5]]
>>> b[3][1] = 9999
>>> b
[1, 1000, 3, [4, 9999]]
>>> a
[1, 2, 3, [4, 9999]]
深拷贝:创建一个新对象,对象的元素也是新建的对象,而不是原对象元素的引用。通过b = copy.deepcopy(a)实现:
>>> a = [1, 2, 3, [4, 9999]]
>>> import copy
>>> b = copy.deepcopy(a)
>>> b[3][0] = 100000
>>> b
[1, 2, 3, [100000, 9999]]
>>> a
[1, 2, 3, [4, 9999]]
3.第一类对象
>>> items = dict()
>>> items['func'] = abs
>>> import math
>>> items['module'] = math
>>> items['func'](-9)
9
>>> items['module'].sqrt(4)
2.0
4.字符串
(1)format()
>>> a = "your name is {0}, and age is {1}"
>>> a.format('Jack',25)
'your name is Jack, and age is 25'
5.集合
(1)set
可变集合
(2)frozenset
不可变集合
6.绑定方法及非绑定方法
(1)绑定方法
调用时需要为self传参
(2)非绑定方法
不用为self传参
7.常用属性
(1)函数的常用属性
f.__doc__
f.__name__
f.__code__
f.__dict__
f.__defaults__
f.__globals__
f.__closure__
(2)类的常用属性
t.__doc__
t.__name__
t.__bases__
t.__dict__
t.__module__
(3)模块的常用属性
m.__doc__
m.__name__
m.__file__
m.__dict__
m.__path__
8.解释器内置对象类型
(1)代码对象:编译之后的可执行的字节码,compile()返回
(2)帧对象:表示执行帧,多出现在跟踪对象中。
(3)跟踪对象:出现异常时会创建跟踪对象,包含栈跟踪信息(可通过sys.exc_info()获取)
(4)生成器对象:包含yield
(5)切片对象:序列等进行切片操作时使用
(6)Ellipsis对象:用于表示索引操作[]中省略号(...)是否存在。
9.对象的创建、初始化、销毁
(1)创建:__new__()
(2)初始化:__init__()
(3)销毁:__del__()
通常new、del在元类中有定义,用户自定义类继承就可以,如果要销毁时关闭连接或者锁,可以重写del函数。
a = A(args) #先调用了__new__(),然后判断isinstance(a,A),再调用__init__()
10.repr、eval
(1)repr:返回一个表达式字符串
(2)eval:执行该表达式字符串
10.迭代
>>> a = [1,2,3,7,8,9,32,45,87]
>>> b = a.__iter__()
>>> while True:
try:
print b.next()
except StopIteration:
break
1
2
3
7
8
9
32
45
87
python参考手册--第3章类型和对象的更多相关文章
- python参考手册--第1章python简介
1.if __name__ == '__main__': 直接运行myModel.py时,当前模块的名字是main:import myModel然后运行的时候当前模块的名字是myModel. 2.ev ...
- python参考手册--第9章
1.读取命令行选项 (1)sys.args python启动时,命令行选项设置在列表sys.args中. sys.args[0]:xxx.py sys.args[1:]: 其他参数 (2)optpar ...
- python参考手册--第8章
1.模块和import (1)首次import module会做以下3件事: a)创建新的命名空间,用作在该源文件中定义的所有对象的容器.在模块中定义的函数和方法在使用global语句时将访问该命名空 ...
- python参考手册--第2章词汇和语法约定
1.续行符\ 三引号.().{}.[]中的内容不需要续行符 2.空格缩进 优选空格作为缩进,不要用tab,这是因为不同操作系统下tab对应的空格不一样,而python是通过严格的空格来控制语句块的. ...
- 《python参考手册(第四版)》【PDF】下载
<python参考手册(第四版)>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230382222 内容介绍 本书是权威的Python语 ...
- [python学习手册-笔记]003.数值类型
003.数值类型 ❝ 本系列文章是我个人学习<python学习手册(第五版)>的学习笔记,其中大部分内容为该书的总结和个人理解,小部分内容为相关知识点的扩展. 非商业用途转载请注明作者和出 ...
- [python学习手册-笔记]004.动态类型
004.动态类型 ❝ 本系列文章是我个人学习<python学习手册(第五版)>的学习笔记,其中大部分内容为该书的总结和个人理解,小部分内容为相关知识点的扩展. 非商业用途转载请注明作者和出 ...
- JavaScript 参考手册——javascript本地和内置对象、BOM、DOM
本部分提供完整的 JavaScript 参考手册: JavaScript 本地对象和内置对象 Browser 对象(BOM) HTML DOM 对象 JavaScript 对象参考手册 本参考手册描述 ...
- python参考手册--第4、5、6、7章
1.zip zip(s,t):将序列组合为一个元组序列[(s[0],t[0]), (s[1],t[1]), (s[2],t[2]), (s[3],t[3]),...] >>> s = ...
随机推荐
- 使用subst创建虚拟磁盘及设置分区卷标
最近项目中要研究在"计算机"中添加虚拟磁盘,能够访问某远端目录,同时还要在资源管理器中可以看到创建的虚拟磁盘.关于虚拟磁盘,有几种方式: (1)映射网络磁盘:通过映射网络驱动器,可 ...
- PC电脑运行Android模拟器总是弹出“视频源”窗体的原因和解决方案
原因: PC电脑运行Android模拟器时弹出“视频源”窗体,会让你"选择视频设备",如:HP TruevIsion HD,而这个视频设备就是你电脑中的内置摄像头,这个内置摄像头在 ...
- PHP之HMVC
HMVC(Hierarchical-Model-View-Controller),也可以叫做 Layered MVC.顾名思义,就是按等级划分的 MVC 模式,简单的解释就是把MVC又细分成了多个子 ...
- Oracle 硬解析查询
-- 硬解析的 parse count (hard) select * from v$sysstat where name like '%parse%'; select a.value,b.name ...
- 《JS高级程序设计》笔记 —— 解析查询字符串
今天在继续翻阅<JS高级程序设计>的时候,正好翻到location对象这一小节,其中有一部分就是讲的解析查询字符串.看到这个内容立马想到了做去哪儿秋招笔试题的时候有这么一道题. 去哪儿笔试 ...
- CKedit在线编辑器
在线编辑器 在实现所见即得的编辑效果. FCK 是开发者的名字的缩写 CKEditor 功能很完善的,具有,在线编辑与图片上传JS插件 UEdit ...
- 用于主题检测的临时日志(594fb726-af0b-400d-b647-8b1d1b477d72 - 3bfe001a-32de-4114-a6b4-4005b770f6d7)
这是一个未删除的临时日志.请手动删除它.(f8322da6-c527-47fb-98d2-f12a7d814d19 - 3bfe001a-32de-4114-a6b4-4005b770f6d7)
- ubuntu 阿里云安全配置
1. 添加新用户, 加入 root 组, 赋予 sudo 权限 2. 禁用 root 3.
- WMB代理无法正常启动时的解决方案。
情况:执行了启动命令,查看状态的时候 还是停止..再启动,又说已经启动了.. 解决方案:正常情况在hosts文件加一条记录:主机IP和hostname的映射关系就好了
- springMVC整合memcached
非原创,文章转自:http://www.cnblogs.com/xiaoqingxin/p/4132391.html 文章我就不全copy了,摘抄下我关注的部分,想看原文的请移步上面文章链接 appl ...