一 python的元类是什么
__metaclass__ - python一切皆对象.类也是对象的一种.元类是创造类的类,python的内置元类是python 任何定义类的行为(class关键字)都是type实例化的结果
通过__class__.__class__ 查看类属性最终看到type 一般的类都继承object,那object的父类其实就是type
二 python 深浅拷贝
普通复制 两者都指向同一内存区域 父类和子类对象修改都会影响
浅拷贝 复制父类对象不同内存空间,但是两者子类还是指向同一内存空间 子类空间修改会影响
深度拷贝 复制父类对象和字类对象到不同内存空间,都进行了独立,互不影响
三 GIL global lock
python的多线程其实是伪多线程,同一时间只有一个线程在跑,GIL锁定其线程的资源.下一个线程如果想运行,则需要申请GIL锁 只存在于通过C语言实现的Python解释器上
而python的多进程就没有这个问题.实现了真正意义的并发
多线程和多进程在理论上都可以用到多核心
四 pyc文件
当python程序运行时,编译的结果则是保存在位于内存中的PyCodeObject中,当python程序运行结束时,python解释器则将PyCodeObject写回到pyc文件中。当第二次执行时.会直接跳过编译阶段.使用pyc文件
什么情况下会生成pyc文件呢
1 单纯的脚本自调用并不会生成pyc文件 单纯的引用已经安装好的模块也不会生成pyc文件(因为已经预编译好了)
2 调用另一个自定义py文件(函数,类) 会生成pyc文件 也可以可以通过python -m 命令 或者在代码中调用py_compile模块生成
python2会生成pyc , python3 是 __pycache__/ 下生成
五 常用的状态码
200 正常 403 禁止访问 401权限问题 404 网页未找到 500 代码错误 301 永久重定向
六 回调函数
简单来说就是定义一个函数,然后将这个函数的函数名传递给另一个函数做参数(函数指针),以这个参数命名的函数就是回调函数。 回调函数本身是在合适的时机调用处理某些情况,并非立刻就调用 常见的异步处理情况场景处理需要回调函数进行结果处理工作
下面是一个例子