python进阶
一、第三方模块
1. virtualenv
virtualenv就是用来为一个应用创建一套“隔离”的Python运行环境。
用pip安装的包都被安装到新建的环境下,系统Python环境不受任何影响
使用
安装
pip3 install virtualenv创建环境
virtualenv --no-site-packages venv //no-site-packages指的是系统pip的不复制过去,建立一个纯净的python环境 //例如Anocanda一个环境,Django单独安装一个环境 //有些想用python2,有些用python3,都可以用虚拟环境解决使用环境
source venv/bin/activate
2. Tkinter图形库
Python提供了多个图形界面的库,如:
Tkinter: Python标准内置库,能在大多数Unix平台下使用
wxPython: 开源软件
Jython: 和java有关的一种
PyQT: 和QT有关的一种
二、文件操作
1. 读文件
打开文件
读文件
2. 写文件
3. 编码与解码
4. 对特殊数据结构的存储,pickle模块
三、时间系统模块
1. calendar模块
2. datetime模块
3. time模块
4.
四、OS模块
五、类
0. 类的定义
1. 单继承
2. 多继承
3. 对象属性与类属性
4. 构造函数
5. 析构函数
6. 重写__str__()
7. 运算符重载
就是重写特殊函数
例如:__str__(self)等
六、模块
1.包
为什么用包:
若不同的人写的模块名字相同,引用会发生冲突
怎么用:
相当于建立一个文件夹,该文件夹下必须有__init__.py文件,有这个文件才能被认为是一个包
2. 系统模块
sys主要用argv属性,获得命令行参数
相当于main(argv,args[])中的args
3. 自定义模块
一个.py文件就是一个模块
__name__=="__main__"的作用
#常用格式:
def main(): pass
if name=="main": main()
七、高级函数
1. 过滤器
2. 队列
3. 栈
4. 排序
5. map,reduce
map就是对列表的每一个元素应用某个函数
reduce是计算
6. 偏函数
7. 装饰器
最简单的装饰器
改进的装饰器
通用的装饰器
8. 广度遍历
9. 深度遍历
10. 递归遍历目录
八、多任务
1. 用途
计算密集型 or IO密集型
计算密集型就是用CPU比较多,此时进程数等于CPU核数效率最高,例如对视频高清解码
IO密集型就是多IO,此时进程越多越好,但也不能无限多,例如Web应用
多任务实现原理
多进程
多线程
2. 进程
入门
multiprocessing是一个跨平台的多进程库
父子进程的先后顺序
一般子进程启动后,不受父进程的结束影响,可用.join(),让父进程等子进程运行完后再运行
进程间通信:通过队列实现
有点类似管道
进程池
用于处理大量子进程
全局变量在多个进程中互不影响
自己封装进程
3. 线程
入门
线程用的是进程的空间
多线程共享变量
多进程,会对使用内存进行拷贝,各进程互不影响
多线程,各线程共享相同变量,若多个线程同时改一个变量,容易把内存搞乱
加锁
定时线程
条件变量调度
若不加cond,线程执行是没有顺序的,加了后从0到9依次执行
这只是两个进程,多个进程用到再学吧
生产者消费者
4. 协成
入门
Python协程是通过generator实现的,这就是一个简单的协程
子程序/函数:层级调用,A调用B,B调用C,通过栈实现,调用的顺序明确
协程:看上去也是子程序,但在执行过程中,在子程序内部中可中断,然后转而执行别的子程序
协程实现功能像线程,但是一个线程执行,而不是多个线程调度执行,
协程效率极高,不存在同时写变量的冲突
协程实现消费者生产者
九、正则表达式
1. re模块
十、数据库
1. mysql
连接中出现的问题:
一开始这个文件的名字不叫“连接测试.py”,而是"pymysql.py",和包名重名了就会出问题
十一、网络编程
1. TCP
clent
server
多个client
之前的只能接受一个client连接,这个可以接受多个client的连接
2. UDP
client
server
最后更新于
这有帮助吗?