叽叽喳喳,嘻嘻哈哈

导航

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__()方法。

 

posted on 2016-09-03 10:43  叽叽喳喳,嘻嘻哈哈  阅读(188)  评论(0编辑  收藏  举报