Skip to content

1. 前言

本文件的PDF版本可在此处获取 |HERE|。

本文中列举的示例可点击<此处>查看。

本文档提供了一份涵盖多个领域的 Python 脚本列表:

  • 语言基础;
  • MySQL 和 PostgreSQL 数据库管理;
  • TCP/IP 网络编程(HTTP、POP3、IMAP、SMTP 协议);
  • 基于 FLASK 框架的 MVC Web 编程;
  • 三层架构与面向接口的编程;

本课程并非全面的 Python 教程,而是一系列示例的集合,主要面向已使用过 Perl、PHP 或 VBScript 等脚本语言的开发者,或习惯于 Java 或 C# 等强类型语言、并希望探索面向对象脚本语言的开发者。对于编程经验较少或毫无编程经验的读者,本文档并不适合。

本文档也不是“最佳实践”的汇编。经验丰富的开发者可能会发现,其中部分代码可以写得更优雅。本文档的唯一目的是为希望学习 Python 3 和 Flask 框架的人提供示例。之后,他们可以借助其他资源加深理解。

脚本均附有注释,并展示了执行结果。有时还会提供补充说明。阅读本文需主动思考:要理解一个脚本,必须通读其代码、注释及执行结果。

本文档中的示例可在此处查看:

Image

本文档是对 2011 年 6 月发布的旧版文档 |https://tahe.developpez.com/tutoriels-cours/python/| 的更新。2011 年的文档是使用 Python 2.7 解释器构建的。此后,Python 3.x 版本已陆续发布。 截至 2020 年 2 月,当前版本为 3.8。3.x 版本引入了跨版本兼容性的断层:在 Python 2.7 下运行的代码可能无法在 Python 3.x 下运行。这一点在控制台输出方面尤为明显。 在 2.7 版本中,您可以编写 [print "toto"],而在 3.x 版本中则必须编写 [print("toto")]:必须使用圆括号。这一简单的变化意味着 2011 年文档中提供的绝大多数代码无法直接在 Python 3.x 中使用,必须进行修改。

这份新文档不仅将 2011 年的代码更新为可在 Python 3.8 上运行:

  • 关于 TCP/IP 编程和数据库使用的章节已发生重大变更;
  • 关于 Web 编程的部分,此前仅为入门介绍,现已发展为使用 Flask 框架的完整课程;

在制作这门课程时,我采取了一种非传统的做法:我移植了PHP课程《通过实例学习PHP7入门》。因此,我并没有遵循Python或Flask课程的传统结构。最重要的是,我想知道如何用Python 3实现我在PHP 7中做过的事情。最终,我成功地在Python 3/Flask中重现了PHP 7课程中的所有示例。

本文档可能存在错误或遗漏。读者可通过讨论帖 |论坛| 进行反馈。

文档内容如下:

章节
代码仓库
目录
   
 
课程概述
 
设置工作环境
[基础]
Python 语言的基础
– 语言结构 – 数据类型
– 函数 – 控制台输出 –
格式字符串 – 类型转换
– 列表 – 字典 – 正则
表达式
[字符串]
字符串表示法 –
<str> 类的方法 – 字符串的编码/解码
UTF-8 字符串
[异常]
异常处理
[函数]
变量作用域 – 参数
传递 – 使用模块 – Python
Python 路径 – 命名
参数 – 递归
函数
[files]
读写文本文件 –
处理 UTF-8 编码文件 –
处理 JSON 文件
[taxes/v01]
应用程序的第 1 版
练习:计算所得税
。该应用程序共有18个
个版本——第1版实现了
一种过程化解法
[导入]
管理应用程序
通过导入
模块——本文介绍了
管理方法
——该方法贯穿
文档中——管理
Python 路径
[imports/v02]
应用程序的第 2 版
在第 1 版的基础上,将
所有配置常量整合到一个
配置文件中,该文件还
管理 Python 路径
[impots/v03]
该应用程序的第 3 版
在第 2 版的基础上,通过使用
封装在
模块中封装的函数——
管理通过
配置文件——引入了一个
JSON文件来读取
用于税费计算,并写入
计算结果
[classes/01]
类 – 继承 – 方法
和属性 – 获取器/设置器 –
构造函数 – [__dict__]
属性
[classes/02]
[BaseEntity]
以及在
——
——[BaseEntity]
有助于实现对象/字典
转换
[三层]
分层架构与
基于接口的编程。
本章介绍了
文档
[taxes/v04]
应用程序的第4版——此
版本实现了一个
,采用分层架构,
基于接口的编程,以及
并使用从
[BaseEntity] 以及
[MyException]
[databases/mysql]
安装 MySQL 数据库管理系统 –
连接数据库 –
创建表 – 执行
SELECT、UPDATE、DELETE
和 INSERT SQL 语句 –
事务 – 参数化
SQL查询
[数据库/PostgreSQL]
安装 PostgreSQL 数据库管理系统
– 连接数据库 –
创建表 – 执行
SELECT、UPDATE、DELETE
和 INSERT SQL 语句 –
事务 – 参数化
SQL查询
[数据库/任意DBMS]
编写与数据库管理系统无关的代码
[数据库/SQLAlchemy]
SqlAlchemy ORM(对象-
关系映射器)——一种 ORM
提供了一种统一的方法
处理不同的数据库管理系统(DBMS)——
将类映射到 SQL 表——
对类进行操作
即代表 SQL 表的类
[taxes/v05]
税费计算应用程序的第5版
——采用分层
架构以及
SqlAlchemy ORM 配合
支持MySQL和PostgreSQL
数据库管理系统
[inet]
Web 编程 – TCP/IP
协议(传输控制
协议 / 互联网协议) –
HTTP 协议(超文本
传输协议) – SMTP
(简单邮件传输协议)
– POP(邮局协议)–
IMAP(互联网邮件访问
协议)
[flask]
使用 Flask Web
框架——显示一个
HTML 页面 – JSON Web 服务
– GET 和 POST 请求 –
管理 Web 会话
[impots/http-servers/01]
[taxes/http-clients/01]
应用程序第 6 版
练习——创建一个用于税费计算的 JSON Web
服务,采用
多层架构——编写
为该服务器编写一个Web客户端,采用
多层架构 –
客户端/服务器编程 –
使用 [requests] 模块
[taxes/http-servers/02]
[taxes/http-clients/02]
应用程序的第7版
练习——第6版已改进:
客户端和服务器均
支持多线程——[Logger]
用于记录客户端/服务器
通信记录的实用工具 – [SendMail] 用于向
向应用程序
管理员
[taxes/http-servers/03]
[taxes/http-clients/03]
应用程序第8版
练习——第7版已通过
通过使用Web会话
[xml]
XML(扩展标记
语言) 管理与
[xmltodict] 模块
[taxes/http-servers/04]
[impots/http-clients/04]
应用程序第 9 版
练习——修改第8版
以支持客户端/服务器
[taxes/http-servers/05]
[taxes/http-clients/05]
应用程序第 10 版
练习——通过 N 次 GET 请求
纳税人,
使用单个 POST 请求
将这 N 位纳税人包含在 POST
正文中
[taxes/http-servers/06]
[taxes/http-clients/06]
应用程序的第11版
练习——应用程序的
客户端/服务器架构
进行了修改:[业务]
从服务器移至
客户端
[taxes/http-servers/07]
应用程序的第12版
练习——此版本实现了
一个 MVC(模型–视图–
控制器)服务器,用于提供
JSON、XML 和 HTML
格式,具体取决于
客户端的请求。本章
实现了该服务器的 JSON 和 XML
版本
[impots/http-clients/07]
JSON 和
XML客户端的实现
(第12版)
[impots/http-servers/07]
HTML
服务器——使用
Bootstrap CSS 框架——
[impots/http-servers/08]
应用程序的第13版
练习——重构代码
(基于第12版)——会话
管理
[flask_session] 模块和
Redis 服务器——使用加密
密码
[impots/http-servers/09]
[impots/http-clients/09]
应用程序第 14 版
练习——实现 URL
使用 CSRF(跨站请求
)令牌
[impots/http-servers/10]
应用程序第15版
练习——重构代码
从第14版开始,以处理两种
操作类型:ASV(操作
显示视图),仅用于
用于显示视图,
,以及
ADS(Action Do Something),
则执行会
——这些
操作最终都会重定向到
ASV 操作——这使得
正确处理页面刷新
[impots/http-servers/11]
应用程序第 16 版——
带前缀的URL管理
[impots/http-servers/12]
应用程序第 17 版 –
将第 16 版移植到
Apache/Windows 服务器
[impots/http-servers/13]
应用程序的第 18 版 –
修复了第 17 版中的一个错误

该应用程序练习的最终版本是一个客户端/服务器税务计算应用程序,其架构如下:

Image

上层的 [web] 层采用 MVC 架构实现:

Image

本文内容较为密集。读者若能通读至最后,将对 Python/Flask 中的 MVC Web 编程有扎实的理解,进而也能深入掌握其他语言中的 MVC Web 编程。

若您更倾向于直接查看代码、进行测试和修改,而非阅读理论讲解,请按以下步骤操作:

  • |点击此处|查看示例代码:

Image

  • 每个文件夹中都包含一个 [README.md] 文件,该文件将文件夹与课程的某个章节关联起来,并总结了其内容:

[README.md] 文件如下所示:

Image

读者不太可能通读整门课程:

  • 初学者可能会阅读第 1 章到第 15 章,然后停下来。他们可以先花时间编写自己的 Python 脚本,之后再回到本课程;
  • 对 Python 有基础了解且希望学习数据库和 ORM(对象关系映射器)[SQLAlchemy] 的读者,阅读第 16 至 20 章可能就足够了;
  • 想要学习 Web 编程(HTTP、SMTP、POP3、IMAP)的读者可以阅读第 21 章。本章内容相当复杂,涵盖了高级脚本。该章可从两个层面进行阅读:
    • 学习互联网协议;
    • 获取利用这些协议的脚本;
  • 对 Python 有基础了解且希望使用 Flask 框架学习 Web 编程的读者,应阅读第 22 章;
  • 希望深入钻研基于Flask框架的Web编程的读者,可研读第23至38章。这些章节涵盖了日益复杂的客户端/服务器应用程序的开发,以及遵循MVC(模型-视图-控制器)开发模式的HTML/Python应用程序。该应用程序在第32章中进行开发。您可在此处停止阅读。后续章节介绍的仅是次要的变更;

Serge Tahé,2020年9月