学员基础
1. 掌握任意一门编程语言,如 JAVA、C、 C++ 等, 1-3年以上的开发经验。
2. 熟悉Python语言的基础语法:如判断循环、函数与类、文件操作、异常处理、标准库等
3. 熟悉常见的操作系统操作和网络协议原理如:Linux、HTTP、TCP
4. 熟悉常用的数据结构、算法和设计模式,如链表、堆栈、红黑树、快速排序等
课程目标
1. 能够编写具有Python风格的代码
2. 掌握装饰器、魔术方法、 鸭子类型、动态属性等Python高级用法,充分发挥动态语言的优势
3. 掌握Python开发的最佳实践
课程大纲
第一天
第一部分如何写Python风格的代码
1 Python数据模型(0.5小时)
1.1 案例:从一个“不像Python”的Python程序说起
1.2 Python风格编程之魔术方法
第二部分数据结构
2 序列(1小时)
2.1 序列的内存分布及其包含的数据类型
2.2 列表元组在实际运行中的效率差异?
2.3 Python风格编程之推导式
2.4 高阶函数filter与map(案例:MapReduce模式与Google的三驾马车)
2.5 序列排序与均值滤波算法
2.6 数组与Numpy(案例:利用 Numpy和数组分别进行矩阵操作,并分析性能优劣)
2.7 双向队列(案例:采用消息队列机制避免数据爆发增长,导致数据库崩溃)
3 字典和集合(0.5小时)
3.1 映射与hash的内存分布
3.2 字典推导式
3.3 defaultdict与UserDict(案例:利用字典实现复杂映射)
4 文本和数字(0.5小时)
4.1 Unicode编码与解码
4.2 编解码异常处理--解决乱码问题最佳实践
4.3 正则表达式(案例:使用Python进行数据预处理)
4.4 精确的浮点数计算
4.5 正确使用Python解析网络协议封包
第三部分深入函数
5 函数(2小时)
5.1 Python风格编程之匿名函数
5.2 动态类型语言的参数传递与静态语言的主要差异
5.3 函数式编程
5.4 Python风格编程之functools
5.5 闭包与装饰器(案例:利用装饰器简化被修饰函数复杂度)
5.6 大型框架必备技能之叠放装饰器(案例:利用装饰器实现复杂函数定义)
5.7(案例)Django中的装饰器源码分析
5.8(案例)Django中的动态属性源码分析
第四部分面向对象
6 对象的引用和回收(0.5小时)
6.1 变量赋值的本质--Python虚拟机如何管理内存分配
6.2 对象的“相对”可变与不可变(案例:利用字节码分析Python性能瓶颈)
6.3 深拷贝与浅拷贝 (案例:对Python对象进行错误赋值导致的线上bug一例)
6.4 == 与 is 的区别
6.5 GC(案例:CPython垃圾回收机制剖析)
7 Python风格的对象(1小时)
7.1 __new__与 __init__魔术方法的正确用法(案例:利用__new__实现单例设计模式)
7.2 classmethod 与 staticmethod类中必备的装饰器
7.3 Python风格编程之鸭子类型 (案例:实现复杂的自定义数据模型)
7.4 Python风格编程之黑魔法
7.5 切片处理__getitem__
7.6 接口(案例:为Python定义“接口”)
7.7 协议与猴子补丁
7.8 抽象基类collections.abc
7.9 子类化内置类型
7.10 多继承与MRO(案例:Django的多继承实现原理,及源代码解析)
7.11 案例:基于pyvmomi(https://github.com/vmware/pyvmomi) 实战Python语言的高级特性
第二天
第五部分控制流
8 迭代(1小时)
8.1 迭代与递归
8.2 可迭代对象与迭代器
8.3 生成器
8.4 Python风格编程之上下文管理器
8.5 协程与yield(案例:Python协程的演化过程)
9 并发编程(1小时)
9.1 多进程、多线程与协程 (案例:多进程与多线程模型性能差异比较)
9.2 使用future模块处理Python并发
9.3 使用底层threading库管理多线程
9.4 多进程、多线程间的通信
9.5 协程与asyncio包
9.6 CPython与GIL,Python性能的阿喀琉斯之踵
第六部分 Web框架
10 框架工具及设计模式(1小时)
10.1 MVC与MVVM 模式在Web后端开发的作用
10.2 案例:通过路由规则理解偏函数
10.3 主流框架Django与fastAPI对比
10.4 案例:基于Python的框架技术快速实现 RESTapi的创建和认证
11 Django Admin快速创建在线表单服务(1小时)
11.1 利用ORM框架加速数据建模
11.2基于函数和基于类定义视图
11.3 基于Admin模块实现用户认证
11.4 如何解决CSRF跨域请求的安全问题
12 优化代码 - 好代码的一般特征(0.5小时)
12.1 契约式设计
12.2 防错性设计
12.3 组合和继承
12.4 软件的正交性
12.5 Python中可实现的SOLID原则
12.6(案例)用装饰器改善代码
12.7(案例)描述符的分离及如何从对象中获取更多信息
第七部分 发布
13 发布一个完整的Python代码(1小时)
13.1 使用pyvenv 建立虚拟环境
13.2 通过pip及配置文件解决特定版本的软件包依赖关系
13.3 Python异常处理机制,及如何使用错误处理抛出友好的异常信息
13.4 使用nginx+gunicorn部署生产环境的Web服务
13.5 如何将Python应用程序打包为Docker镜像
13.6 如何将将Python程序发布为windows下的可执行文件(EXE)
14 精进Python(0.5小时)
14.1 推荐读物
14.2 GitHub中,优秀的Python项目
14.3 GitHub中,优秀的学习资源
补充:各章节后,增加了学员可以实际动手的小型项目,约占授课总时长的10~15%