面经-python
***面向对象
- 类:用来描述具有相同属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
- 类变量:类变量在整个实例化的对象中是公用的。
- 数据成员:类变量或实例变量,用于处理类及实例的相关数据
一、python内存管理
对象的引用计数机制、垃圾回收机制、内存池机制
1. 对象的引用计数
Python内部使用引用计数,来保持追踪内存中的对象。当对象被创建时,就创建了一个引用计数,当对象不再被需要时,这个对象的引用计数为0,会被垃圾回收。
a=23,23这个对象并没有在内存中新建,Python启动解释器时会创建一个小整数池,-5~256之间的对象会被自动创建加载到内存中等待被调用,a=23是为23这个整数对象增加了一个引用。
2. 垃圾回收
当一个对象的引用计数归零时,会被垃圾回收。
当两个对象a,b相互引用时,del语句可以减少a和b的引用计数,并销毁用于引用底层对象的名称。但引用计数不会归零,从而导致内存泄露。
Python会定期执行一个循环检测器,搜索不可访问的对象的循环,并删除他们
3. 内存池机制
Python提供了对内存的垃圾回收机制,将不用的内存放到内存池。用于管理对小块内存的申请和释放。
小于256个字节的对象都使用pymalloc,而大的对象使用系统的malloc
对于Python对象,如整数、浮点数和List,都有其独立的私有内存池,对象间不共享它们的内存池。
二、构造函数
python的构造函数是 _init_ ( self [,args...] )
java中构造函数主要用来完成对象的初始化工作,构造函数必须与类的名字相同,且不能有返回值,返回值也不能为void,构造函数可以有多个参数。一个类可以有多个构造函数,可根据其参数个数的不同或参数类型的不同来区分它们,即构造函数的重载。
例题:
对于派生类的构造函数,在定义对象时构造函数的执行顺序为? 213
1:成员对象的构造函数
2:基类的构造函数
3:派生类本身的构造函数构造函数和析构函数不能被继承,只能调用
可以通过参数个数或参数类型区分构造函数,不能通过返回值区分
类的构造函数可以为内联函数、重载函数或带默认形参值的函数
构造函数可以是私有的
构造函数不能被覆盖静态成员不属于某个对象,而属于类本身。
可以在构造函数中使用或修改静态成员的值,但不能初始化它
- os模块
os 模块提供了非常丰富的方法用来处理文件和目录。
os.chdir(path) 改变当前工作目录
os.chmod(path,mode) 更改权限
os.close(fd) 关闭文件描述符fd
os.link(src,dst) 创建硬链接,名为参数dst,指向参数src
os.open(file,flags[,mode]) 打开一个文件,设置需要的打开选项
os.pipe() 创建一个管道,返回一对文件描述符(r,w)
os.path 模块 获取文件的属性信息。
衍生:
文件描述符
硬链接
管道(进程间通信)
python模拟http请求
python安装库
pip install 库名