1. python中一切皆对象,可以用“.”来访问对象的属性以及方法;
2. id()用于返回对象在内存中的位置,并不表示对象的身份;is用来比较两个对象的身份是不是相同,即是不是同一个对象;“==”用来比较对象是否有相同的值;type()用来比较两个对象是否是有相同的类型,(type(a) is type(b));可见,类型本身也是对象;还可以使用isinstance(object, type)来检查类型;
3. python可以为对象创建计数并且可以自动回收垃圾,当减少对象的一个引用的时候,其计数自动减一,当计数为0 的时候对象自动被回收,使用sys.getrefcount()函数可以获取对象的当前引用计数;然而对于循环依赖,例如:
a={}
b={}
a['b']=b
b['a']=a
del a
del b
例子中引用对象不会归0,所以对象不会销毁;因此解释器会定期执行循环检测器,搜索不可访问对象的循环并且删除;
4. 引用是指为对象创建一个新的副本,因此修改任一对象,另外一个对象都会受到影响,这属于浅复制;深复制将创建一个新的对象,并且递归的复制他包含的所有对象,
浅复制:
a=[1,2,[3,4]]
b=list(a)
print b is a
#(print false)
b.append(100)
print b
#(print [1,2,[3,4],100])
b[2][0]=-100
print b
#([1,2,[-100,4],100])
print a
#([1,2,[-100,4]])
深复制:
import copy
a=[1,2,[3,4]]
b=copy.deepcopy(a)
b[2][0]=-100
print b
#([1,2,[-100,4]])
print a
#([1,2,[3,4]])
5. python的所有对象都是第一类对象(什么意思?)(能够使用标识符命名的所有对象都具有相同状态,能够命名的所有对象都可以当作数据处理)
一个字典中可以包含多种类型,比如函数、模块、异常等等