7-1 python中的变量是什么
# python中的变量和java中的变量本质不一样,python的变量实质是一个指针,int,str,便利贴
a = 1
a="abc"
#1.a贴在1上面
#2.先生成对象然后贴便利贴
a = [1,2,3]
b=a
print (id(a),id(b))
print (a is b) #is就是说它们两是不是同一个对象
b.append(4)
print(a)
7-2 ==和is的区别
#is就是判断两个对象是否相同,==是判断值是否相等
a=[1,2,3,4]
b=[1,2,3,4]
print (a is b)
print(a==b)
#这时a和b是两个duixiang
class People():
pass
person = People()
if type(person) is People:
print ("yes")
但是当a=1,b=1时候是相等的,python内部的优化机制
7-3 del语句和垃圾回收
#python中的垃圾回收的算法是采用引用计数,当引用为0则回收
a=1
b=a
del a
class A:
def __del__(self):
pass
#可以重载__del__魔法函数帮我们做些事
7-4 一个经典的参数传递错误
def add(a,b):
a+=b
return a
class Company:
def __init__(self,name,staffs=[]):
seif.name=name
self.staffs=staffs
def add(seif,staff_name):
self.staffs.append(staff_name)
def remove(self,staffs_name):
self.staffs.remove(staff_name)
if __name__ =="__main__":
com1 = Company("com1",['bobby1','bobby2'])
com1.add('bobby3')
com1.remove('bobby1')
com2=Company("com2")
com2.add("bobby")
print(com2.staffs)
print(Company.__init__.defaults__)
com3=Company("com3")
com3.add("bobby5")
print(com2.staffs)
print(com3.staffs)
print(com1.staffs)
a=1
b=2
c=add(a,b)
print(c)
print(a,b)
a=[1,2]
b=[3,4]
a=(1,2)
b=(3,4)
print(c)
print(a,b)
7-5 本章小结
对象引用可变性,python变量的本质,is和==的区别,del回收机制,参数传递错误.