python 基础学习笔记(四) 引用及垃圾回收
2018-03-25 17:14
676 查看
进一步的列表操作
dict_exm.__delitem__("a")
print(dict_exm)内置函数
同一对象的某属性依赖于另外一个属性,即时变化class chicken(object):
def __init__(self,age):
self.age=age
def isAdult(self):
if self.age>1.0:
return True
else:
return False
adult=property(isAdult)
feather=True
summer=chicken(18)
summer.feather=False
print(chicken.feather) #True
print(summer.adult) #True
chicken.feather=3
print(chicken.feather) #3property(获取特性函数,修改特性函数,删除特性函数,特性文档)class number(object):
def __init__(self,value):
self.num=value
def get_neg(self):
return -self.num
def set_neg(self,value):
self.num=-value
def del_neg(self):
print("delete value")
del self.num
neg=property(get_neg,set_neg,del_neg, "negative")
n=number(2.5)
print(n.num)
n.neg=-22
print(n.num) #22
print(n.neg) #-22
print(n.neg.__doc__)
del n.neg #delete value
#print(n.num) 报错__getattr__()对属性的操作
只作用于查询不在__dict__( )中的属性class number(object):
def __init__(self,value):
self.num=value
def __getattr__(self,name):
if name=="pos":
if self.num>10:
return True
else:
return False
else:
raise AttributeError(name)
num=number(11)
print(num.pos) #true
num=number(10)
print(num.pos) #false__setattr__( self,name,value)和__delattr__(self,name )可作用于任一属性
引用查看
id(变量名)a=1
print(id(a))
print(id(1)) #两者相等
a="b"
print(id(a))
a=1
b=a
print(id(b))
print(id(a)) #两者相等
a=1
print(id(a))
a=a+2
print(id(a)) #增加,根据操作系统字节数计算对于列表
list1=[0,1]
list2=list1
list1[0]
print(list2) #也会改变
is 判断两个引用是否指向同一对象
函数的参数传递
当某个对象的引用计数降为0,该对象就会被回收
当分配对象和取消分配对象的次数的差值高于某个阈值的时候,会启动自动回收import gc
print(gc.get_threshold())返回(700,10,10)
700:阈值
10:每10次0代(新建的)垃圾回收配合1次1代回收
10:每10次1代,1次2代
可修改:
import gc
gc.set_threshold(700,10,5)
print("abc"+"xyz") s="abc".__add__("xyz") print(s) b=2.0.__mul__(3.0) print(b) lis=[1,2,3,4] print(lis.__getitem__(3)) print(lis[3]) b=lis[:] a=lis print(b,"\n",a) lis.__setitem__(3,0) #位置三设为0 print(lis) lis.__delitem__(2) #删除数字2 print(lis)字典dict_exm={"a":1,"b":2,"c":3}
dict_exm.__delitem__("a")
print(dict_exm)内置函数
print(len([1,2,3])) print([1,2,3].__len__()) print(abs(-1)) print((-1).__abs__()) print(int(2.3)) print((2.3).__int__())特性(property)
同一对象的某属性依赖于另外一个属性,即时变化class chicken(object):
def __init__(self,age):
self.age=age
def isAdult(self):
if self.age>1.0:
return True
else:
return False
adult=property(isAdult)
feather=True
summer=chicken(18)
summer.feather=False
print(chicken.feather) #True
print(summer.adult) #True
chicken.feather=3
print(chicken.feather) #3property(获取特性函数,修改特性函数,删除特性函数,特性文档)class number(object):
def __init__(self,value):
self.num=value
def get_neg(self):
return -self.num
def set_neg(self,value):
self.num=-value
def del_neg(self):
print("delete value")
del self.num
neg=property(get_neg,set_neg,del_neg, "negative")
n=number(2.5)
print(n.num)
n.neg=-22
print(n.num) #22
print(n.neg) #-22
print(n.neg.__doc__)
del n.neg #delete value
#print(n.num) 报错__getattr__()对属性的操作
只作用于查询不在__dict__( )中的属性class number(object):
def __init__(self,value):
self.num=value
def __getattr__(self,name):
if name=="pos":
if self.num>10:
return True
else:
return False
else:
raise AttributeError(name)
num=number(11)
print(num.pos) #true
num=number(10)
print(num.pos) #false__setattr__( self,name,value)和__delattr__(self,name )可作用于任一属性
引用查看
id(变量名)a=1
print(id(a))
print(id(1)) #两者相等
a="b"
print(id(a))
a=1
b=a
print(id(b))
print(id(a)) #两者相等
a=1
print(id(a))
a=a+2
print(id(a)) #增加,根据操作系统字节数计算对于列表
list1=[0,1]
list2=list1
list1[0]
print(list2) #也会改变
is 判断两个引用是否指向同一对象
a=1 b=1 print(a is b) #true
函数的参数传递
def f(x): print("x1:",id(x)) x=100 print("x2:",id(x)) a=1 print(id(a)) #1446800864 f(a) #x1: 1446800864 #x2: 1446804032 print(id(a)) #1446800864垃圾回收 import gc
当某个对象的引用计数降为0,该对象就会被回收
当分配对象和取消分配对象的次数的差值高于某个阈值的时候,会启动自动回收import gc
print(gc.get_threshold())返回(700,10,10)
700:阈值
10:每10次0代(新建的)垃圾回收配合1次1代回收
10:每10次1代,1次2代
可修改:
import gc
gc.set_threshold(700,10,5)
相关文章推荐
- C#学习笔记12-GC的工作原理基础和垃圾回收机制
- 0030 Java学习笔记-面向对象-垃圾回收、(强、软、弱、虚)引用
- Java基础复习笔记 对象状态、引用种类、垃圾回收形式02
- 黑马程序员_学习日记39_604基础加强(垃圾回收、弱引用、集合ArrayList和Hashtable、泛型集合List和Dictionary、var)
- Python基础学习笔记二
- 自动垃圾回收学习笔记-垃圾回收算法
- Python学习笔记【引用VS拷贝】
- .NET读书学习笔记整理----垃圾回收
- Python核心编程(第二版)学习笔记02 【第3章 Python基础】
- 【转】python学习笔记-第1章节 基础知识
- Python基础学习笔记四
- Python基础学习笔记五
- Python2.7 学习笔记 (一)——基础知识
- 学习笔记_2012_4_13垃圾回收原理与String类的学习
- [C#]C#学习笔记-垃圾回收机制
- JVM学习笔记(三)------内存管理和垃圾回收
- JVM学习笔记(1、 基本结构;2、Java代码编译和执行的整个过程3、内存管理和垃圾回收 4、 内存调优 )
- 自动垃圾回收学习笔记-我们为什么需要自动垃圾回收
- Python基础学习笔记
- 【转】.NET深入学习笔记(3):垃圾回收与内存管理