1. enumerate用于将可迭代对象拆包成元组
比如list、dic、range
list = [0,1,2,3]
dic = {'a':1,'b':2,'c':3} for a in enumerate(list): print(a) # 输出为 (0,0) (1,1) (2,2) (3,3)
for a in enumerate(dic): print(a) # 输出为 (0,'a') (1,'c') (2,'f') 这就与键值无关了
2. is 表示两个对象之间地址是否相同,==表示两个对象里的数据是否相同
3. 赋值 = 浅拷贝 copy 深拷贝 deepcopy
- 赋值相当于把对象的地址赋给变量,没有生成新的对象 id不变
- 浅拷贝相当于对原对象打上新标签,仅拷贝对象本身,不会对对象中的子对象进行拷贝,浅拷贝没有生成新的对象 id改变
- 深拷贝是真正意义上的复制,会新开辟一块空间,生成新的对象 id改变
对于不可变类型,如元组、数值、字符串等,怎么拷贝id都不变,且修改原对象,拷贝的对象内容不改变
4. python的内存管理机制
python不需要像c、c++语言需要手动释放内存,会自动进行垃圾回收
这样的优点是不需要手动释放、不会出现内存泄漏、空指针等问题
缺点是垃圾回收机制是作为一个线程存在的,需要占用资源,且不具有实时性,什么时候调用是不确定的,需要垃圾回收线程获得CPU资源时再回收
python的垃圾回收机制以计数法为主,分代回收为辅
其中计数法就是对于一个对象,有一个计数器,建立时计数器+1,具体操作时对计数器进行+-,当计数器归0了就回收
标签:知识点,python,回收,对象,计数器,相关,拷贝,id From: https://www.cnblogs.com/Liang-ml/p/16644846.html