- 进一步的列表操作
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) #3
property(获取特性函数,修改特性函数,删除特性函数,特性文档)
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)