1.请简单说明Python中的下划线和双下划线的作用
1)foo
2)_foo
3)__foo
解:
1、以双下划线开头和结尾的(foo)代表python里特殊方法专用的标识;
2、“单下划线”(_foo) 开始的成员变量叫做保护变量,意思是只有类对象和子类对象自己能访问到这些变量;
3、“双下划线” (__foo)开始的是私有成员,意思是只有类对象自己能访问,连子类对象也不能访问到这个数据
2.请简述python的垃圾回收机制
解:
python的GC模块主要运用了引用计数来跟踪和回收垃圾。
1、Python在内存中存储了每个对象的引用计数(reference count)。
如果计数值变成0,那么相应的对象就会消失,分配给该对象的内存就会释放出来用作他用。
2、偶尔也会出现引用循环(reference cycle)。垃圾回收器会定时寻找这个循环,并将其回收
3、Python中使用了某些启发式算法(heuristics)来加速垃圾回收。例如,越晚创建的对象更有可能被回收。
对象被创建之后,垃圾回收器会分配它们所属的代(generation)。每个对象都会被分配一个代,而被分配更年轻代的对象是优先被处理的。