二
1、所有对象都有引用计数。无论是给一个对象分配一个新名称还是放入一个容器(如:列表、元祖、字典),该对象的引用就会增加
a = 37 #创建一个值为37 的对象 b = a #增加37 的引用计数 c = [] c.append(b)#增加37 的引用计数 del a #减少37的引用计数 b = 28 #减少37 的引用计数 c[0] = 2 #减少37的引用数量
a = 37 import sys sys.getrefcount(a) 11 #获得引用计数,系统为在程序不同部分共享对象,节约内存。会自动添加一些引用所以,会比较多
2、数据类型分类和数据类型
None: None
数字: int,float,complex,bool
序列:list,tuple,str,(unicode,xrange,py2中)
映射: dict
集合: set,frozenset,
适用于所有序列的操作和方法:
索引、切片、len(s)、min(s)、max(s)、sum(s)、del s、del s[:]、all(s) 检查s内所有项是否为True 、any(s)检查s中任意项是否为True
sort 和sorted
sort 是原址排序,只是列表的一个方法;
sorted产生新的序列,可以用于序列和字典(返回键组成的列表)
排列过程,都是把元素传入key的函数中进行运算
a =[3,2,5,3,5,8,5,1,2,4] a.sort(key=lambda x:x-1) sorted(a,key=lambda x:x-1) a='dfafdsngjfjda' sorted(a,key=lambda x:x)#['a','c','e','s'] a = {1:'a',6:'b',3:'c'} sorted(a,key=lambda x:x)#[1,3,6] 字典排序 sorted(a.keys())#[1,3,6] sorted(a.values())#['a','b','c'] sorted(a.items())#[(1,'a'),(3,'c'),(3,'c')]
类和对象
__new__ 用于创建实例
__init__ 用于初始化新实例
__del__ 用于销毁实例 del x 只是减少对象引用计数,并没有调用 __del__函数
__call__用于模拟函数行为。
上下文管理协议
with context [as var]: statements with open(r'test.txt') as f: f.read(10) print(dir(open(r'test.txt') ))#1 print(f)#2 会发现1和2 结果一样都有__enter__和__exit__方法。 context对象要实现上面两个方法,__enter__方法的返回值会被放入 f 中, 只要控制流离开with语句相关,就会立刻调用 __exit__()方法。