课程简介
由于 Python 在深度学习、机器学习等领域的广泛使用,Python 一跃成为人工智能时代的“网红”语言。无论将来从事 Web 相关开发,还是做人工智能方面的研究,学会 Python 都将大有益处。本次课程将重点讲解Pyhton的进阶开发,我们将从深入Python这门语言的底层结构学习,到使用Python高级语法实现业务功能。讲师在每个章节后都设置了动手实操项目,帮助学员更好的理解知识点。
目标收益
1 能够编写具有Python风格的代码
2 掌握装饰器、魔术方法、 鸭子类型、动态属性等Python高级概念
3 使用Python开发后端程序的最佳实践
培训对象
1 了解数据结构和算法的基本概念
2 了解Python语言的基础语法:如变量赋值、判断循环、函数、类、文件操作、异常
3 熟悉常见的操作系统和网络协议如:Linux、HTTP、TCP
课程大纲
如何写Python风格的代码 |
1 Python数据模型(1小时) 1.1 案例:从一个“不像Python”的Python程序说起 1.2 Python风格编程之魔术方法 1.3 Python与C++的主要区别 |
数据结构 |
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 函数(3小时) 5.1 Python风格编程之匿名函数 5.2 动态类型语言的参数传递与静态语言的主要差异 5.3 函数式编程 5.4 Python风格编程之functools 5.5 闭包与装饰器(案例:利用装饰器简化被修饰函数复杂度) 5.6 大型框架必备技能之叠放装饰器(案例:利用装饰器实现复杂函数定义) 5.7 (案例)Django中的动态属性源码分析 5.8 (案例)Django中的装饰器源码分析 |
面向对象 |
6 对象的引用和回收(1小时) 6.1 变量赋值的本质--Python虚拟机如何管理内存分配 6.2 对象的“相对”可变与不可变(案例:利用字节码分析Python性能瓶颈) 6.3 深拷贝与浅拷贝 (案例:对Python对象进行错误赋值导致的线上bug一例) 6.4 == 与 is 的区别 6.5 GC(案例:CPython垃圾回收机制剖析) 6.6 调试工具 pdb cprofile 7 Python风格的对象(2小时) 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 并发编程(2小时) 9.1 多进程、多线程与协程 (案例:多进程与多线程模型性能差异比较) 9.2 使用future模块处理Python并发 9.3 使用底层threading库管理多线程 9.4 多进程、多线程间的通信 9.5 协程与asyncio包 9.6 CPython与GIL,Python性能的阿喀琉斯之踵 |
元编程 |
10 动态属性(1小时) 10.1案例:Django中的动态属性 10.2 属性描述符 10.3 元类 第七部分 Web框架 11 框架工具及设计模式(1小时) 11.1 MVC与MVVM 模式在Web后端开发的作用 11.2 案例:通过路由规则理解偏函数 11.3 主流框架Django与fastAPI对比 11.4 案例:基于Python的框架技术快速实现RESTapi的创建和认证 12 Django Admin快速创建在线表单服务(1小时) 12.1 利用ORM框架加速数据建模 12.2基于函数和基于类定义视图 12.3 基于Admin模块实现用户认证 12.4 如何解决CSRF跨域请求的安全问题 13 优化代码 -- 好代码的一般特征(1小时) 13.1 契约式设计 13.2 防错性设计 13.3 组合和继承 13.4 软件的正交性 13.5 Python中可实现的SOLID原则 13.6(案例)用装饰器改善代码 13.7 (案例)描述符的分离及如何从对象中获取更多信息 14 Python 与 数据分析 (1小时) 14.1 利用Pandas实现确实数据的处理与预测 14.2 如何基于pandas加速Python多维数组操作 14.3 常见机器学习算法与K-means聚类算法的实现(基于Scikit-Learn与手写) 14.4 深度神经网络与数据分类 15 发布一个完整的Python代码(1小时) 15.1 使用pyvenv 建立虚拟环境 15.2 通过pip及配置文件解决特定版本的软件包依赖关系 15.3 Python异常处理机制,及如何使用错误处理抛出友好的异常信息 15.4 使用nginx+gunicorn部署生产环境的Web服务 15.5 如何将Python应用程序打包为Docker镜像 15.6 如何将将Python程序发布为windows下的可执行文件(EXE) 15.7 基于Gooey实现Python的GUI界面 16 精进Python 16.1 推荐读物 16.2 GitHub中,优秀的Python项目 16.3 GitHub中,优秀的学习资源 |
如何写Python风格的代码 1 Python数据模型(1小时) 1.1 案例:从一个“不像Python”的Python程序说起 1.2 Python风格编程之魔术方法 1.3 Python与C++的主要区别 |
数据结构 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 函数(3小时) 5.1 Python风格编程之匿名函数 5.2 动态类型语言的参数传递与静态语言的主要差异 5.3 函数式编程 5.4 Python风格编程之functools 5.5 闭包与装饰器(案例:利用装饰器简化被修饰函数复杂度) 5.6 大型框架必备技能之叠放装饰器(案例:利用装饰器实现复杂函数定义) 5.7 (案例)Django中的动态属性源码分析 5.8 (案例)Django中的装饰器源码分析 |
面向对象 6 对象的引用和回收(1小时) 6.1 变量赋值的本质--Python虚拟机如何管理内存分配 6.2 对象的“相对”可变与不可变(案例:利用字节码分析Python性能瓶颈) 6.3 深拷贝与浅拷贝 (案例:对Python对象进行错误赋值导致的线上bug一例) 6.4 == 与 is 的区别 6.5 GC(案例:CPython垃圾回收机制剖析) 6.6 调试工具 pdb cprofile 7 Python风格的对象(2小时) 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 并发编程(2小时) 9.1 多进程、多线程与协程 (案例:多进程与多线程模型性能差异比较) 9.2 使用future模块处理Python并发 9.3 使用底层threading库管理多线程 9.4 多进程、多线程间的通信 9.5 协程与asyncio包 9.6 CPython与GIL,Python性能的阿喀琉斯之踵 |
元编程 10 动态属性(1小时) 10.1案例:Django中的动态属性 10.2 属性描述符 10.3 元类 第七部分 Web框架 11 框架工具及设计模式(1小时) 11.1 MVC与MVVM 模式在Web后端开发的作用 11.2 案例:通过路由规则理解偏函数 11.3 主流框架Django与fastAPI对比 11.4 案例:基于Python的框架技术快速实现RESTapi的创建和认证 12 Django Admin快速创建在线表单服务(1小时) 12.1 利用ORM框架加速数据建模 12.2基于函数和基于类定义视图 12.3 基于Admin模块实现用户认证 12.4 如何解决CSRF跨域请求的安全问题 13 优化代码 -- 好代码的一般特征(1小时) 13.1 契约式设计 13.2 防错性设计 13.3 组合和继承 13.4 软件的正交性 13.5 Python中可实现的SOLID原则 13.6(案例)用装饰器改善代码 13.7 (案例)描述符的分离及如何从对象中获取更多信息 14 Python 与 数据分析 (1小时) 14.1 利用Pandas实现确实数据的处理与预测 14.2 如何基于pandas加速Python多维数组操作 14.3 常见机器学习算法与K-means聚类算法的实现(基于Scikit-Learn与手写) 14.4 深度神经网络与数据分类 15 发布一个完整的Python代码(1小时) 15.1 使用pyvenv 建立虚拟环境 15.2 通过pip及配置文件解决特定版本的软件包依赖关系 15.3 Python异常处理机制,及如何使用错误处理抛出友好的异常信息 15.4 使用nginx+gunicorn部署生产环境的Web服务 15.5 如何将Python应用程序打包为Docker镜像 15.6 如何将将Python程序发布为windows下的可执行文件(EXE) 15.7 基于Gooey实现Python的GUI界面 16 精进Python 16.1 推荐读物 16.2 GitHub中,优秀的Python项目 16.3 GitHub中,优秀的学习资源 |