您的位置:首页 > 编程语言 > Python开发

python 基础学习笔记(四) 引用及垃圾回收

2018-03-25 17:14 676 查看
进一步的列表操作
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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  引用 垃圾回收 python