2022-回放-01:课程概述与 Python 环境配置(第一次直播回放)¶
内容梗概¶
这是 2022 学期《Python程序设计》的第一次直播回放课(约 1 小时 44 分钟)。老师先通过三个趣味实例(turtle 画图、爬取知乎图片、人脸替换)展示 Python 能做什么,并在演示过程中故意"从零开始",现场暴露并解决各种报错,教学生如何读报错、装环境。随后系统讲解了 Python 的下载安装、环境变量、解释型语言与编译型语言的区别、Python 程序的基本结构和三种运行方式,最后介绍了 VS Code 的配置。本课无正式作业,但要求课后在自己电脑上配好 Python 开发环境。
知识点详解¶
为什么学 Python(约 01:20–04:30)¶
- Python 适合日常自动化:用 Pandas 一键算全班成绩、替代 CMD/PowerShell 写脚本。
- Python 是"胶水语言":连接不同大型任务、快速实现流程自动化。举例:校园网自动登录脚本、按 EXIF 信息批量重命名照片。
- 老师强调课堂演示"不提前排错",故意现场跑出错再现场解决,展示解决问题的思路。
Python 下载与安装(约 04:50–12:00,补充讲解约 48:00–55:00)¶
- 官网 python.org 打不开时报 DNS 错误,可把 DNS 服务器改为
8.8.8.8(域名解析是上网第一步)。 - 官网下载页会自动检测操作系统;需要特定版本可往下翻到版本列表,进入"下载详情页",Files 表格中有多种文件:
- GZIP/XZ source 是源代码压缩包,需要自己编译,初学者不用下。
- macOS 分 Intel CPU 版(已废弃)和通用版;Windows 分 32 位/64 位安装包,下推荐的 64 位即可。
- 没有 Linux 安装包,因为 Linux 用户普遍用包管理器安装(如 Ubuntu 上
apt install python3);pip 本身也是一种包管理器。 - 安装时勾选
Add Python 3.10 to PATH(添加到环境变量),然后 Install Now。 - 安装末尾的 "Disable path length limit":Windows 路径有 260 字符限制(Linux/macOS 没有),建议点击解除。
- 软件安装规范(约 55:00):任何软件都要装到独立文件夹(否则两个软件里的同名文件如
key.dll会互相覆盖);安装路径不要包含中文和空格(很多专业工具不处理非英文路径,且空格会与命令行参数分隔符混淆)。
交互模式与第一个程序(约 10:00–14:00)¶
- 命令行输入
python后出现三个大于号>>>,即进入 Python 交互模式,此时已离开 CMD 环境,cd等命令失效,只能输入 Python 语句。 print("hello world")直接执行;退出交互模式用Ctrl+Z再回车(Ctrl+C只是中断,退不出来)。- 交互模式有"记忆":按顺序执行语句,
import random后可直接用random,之前定义的变量后续可访问。
IDLE 与脚本文件(约 12:00–15:00)¶
- 安装后菜单里有 Python 本体(打开即交互模式)、IDLE(集成开发学习环境)和文档。
- IDLE 中 File → New File 新建文件,
Ctrl+S保存为demo.py,Run → Run Module(F5)运行。 - 老师评价 IDLE 不好用(不能改字体、没有代码自动补全),仅作演示,不推荐日常使用。
编译型语言 vs 解释型语言(约 57:50–1:08:30)¶
- C 语言:
.c/.h源代码经编译器、链接器编译为机器码(CPU 可直接执行的指令,与汇编同源),得到.exe可执行文件。特点:一次编译到处执行、性能好,但编译环境复杂、排错费时(现场 dlib 编译失败就是例证)。 - Python:
.py文件需要解释器(python.exe)才能运行。解释器内部把源代码编译为**字节码**(不是机器码,CPU 不能直接执行),再由 PVM(Python Virtual Machine,Python 虚拟机) 逐条执行。 - 这就是 Python 运行慢的主要原因之一:每次执行都要经过"编译字节码 → PVM 执行"的过程。优化:文件未改动时解释器会缓存编译好的字节码复用。
- 解释型语言优势:写得快、无需配编译环境,只要装了几十兆的解释器就能跑;缺点:别人的机器上也要有解释器才能运行你的
.py。
Python 程序基本结构(约 1:09:00–1:14:00)¶
- 一般结构:先
import导入各种库 →def定义函数(冒号表示进入新代码块,冒号 + 缩进共同划分代码块层级)→ 顶格写要执行的语句。 - 缩进是 Python 最大特色也是被骂最多的地方,层级多了容易看不清,可借助 VS Code 的彩虹缩进等插件。
- Python 一般不需要
main函数,顶格写的语句按顺序直接执行,与 C 语言从 main 入口执行的模式不同。 if __name__ == "__main__":用于测试,其设计原理在"模块与包"一章详细讲。
运行 Python 的三种方式(约 1:14:00–1:25:00)¶
- 交互模式:适合随手试语句,本课程用得少。
- 命令行运行脚本(最推荐):
cd到脚本目录后python demo.py;也可用绝对路径或相对路径(如python desktop/demo.py)指向文件。 - 重要坑:代码里
open("1.txt")这类相对路径是相对于"你执行命令时所在的当前目录",不是脚本所在目录。cd 进 Desktop 执行能找到 1.txt,在用户目录用绝对路径执行脚本则报FileNotFoundError。 - 读取文本文件报编码错:中文 Windows 默认用 GBK 解码,而 VS Code 默认用 UTF-8 保存,需指定
open("1.txt", encoding="utf-8")(编码在"二进制"一节详讲)。 - 集成开发环境里按 F5/箭头运行(新手强烈不推荐):电脑上往往有多个 Python 环境(3.8/3.9/3.10,装的包各不相同),IDE 会自动替你选环境并屏蔽选择过程,新手永远搞不清自己用的是哪个环境。老师要求本课程所有例子和作业都用命令行执行——命令行读环境变量决定环境,清晰可控。程序员原则:一定要清醒地知道自己在做什么。
VS Code 配置(约 1:25:00–1:40:00)¶
- 推荐理由:轻量全能,写 Python、网页、Markdown、脚本都行,不用装一堆 IDE(PyCharm、WebStorm 等)。
- 安装时建议加入环境变量:之后在终端里
code .即可打开当前文件夹,code 文件名打开单个文件。 - 扩展:装微软官方的 Python 扩展(不要装第三方 Extension Pack)和简体中文语言包;主题可选 dark/light。
- Python 扩展的好处:代码高亮、自动补全(如输入
random.rand自动提示randint(start, stop)及参数类型)、函数原型提示。 - 界面角落会显示当前 Python 解释器版本,点开可切换电脑上的多个环境——理解了对应关系之后再用 IDE 的运行按钮才没问题。
课程考核与学习建议(约 44:40–47:50,1:40:00–1:44:30)¶
- 学习建议:多练习、线下实验课跟着做不要摸鱼、大胆提问(提问带错误截图);可参考 GitHub 仓库 issue 的提问方式(写清期望行为、贴完整报错日志、说明已尝试的解决过程);不局限于本课程视频,找到更适合自己的资料也可以。
- 考核方式:与上学期"计算机安全与维护"相同——考勤 + 测试题 + N 次作业评分,作业提交到 Git(Gitee)。本学期新增"作业讲解"环节,线下课拿典型作业(匿名)分析写法优劣。
示例与演示¶
演示一:turtle 画图(约 04:20–15:00)¶
- turtle(海龟)是图形化教学模块,箭头本体是只小乌龟,爬过之处画出轨迹,适合做入门例子。
- 在全新虚拟机里完整走了一遍"下载 Python 3.10.2 → 安装 → 验证交互模式 → IDLE 里粘贴课程概述中的示例代码 → F5 运行"的流程,画出"BILIBILI"字样;把文字改成"CUC"再跑一遍。
- 目的只是展示 Python 能做什么,代码细节(
write在屏幕写字、自定义的curve画弧度函数等)未展开。
演示二:爬取知乎回答中的图片(约 15:00–28:40)¶
- 先讲专业爬虫的三个特征:维护待爬 URL 列表持续爬取;抓到的网页里的新 URL 自动加入列表向下钻取;数据按格式存储且有日志等可维护性。本例只是"把一个页面的图片存下来",不算真正的爬虫。
- 现场从零运行网上找的代码,依次暴露并解决报错:
ModuleNotFoundError: No module named 'requests'→ 在 CMD 里pip install requests(pip 随 Python 自动安装,pip 运行失败说明 Python 没装好)。装完提示 pip 版本低的 warning,按提示命令顺手升级 pip。- 缺
bs4→pip install beautifulsoup4。requests 负责向网站发请求拿网页内容(模拟浏览器),BeautifulSoup 替代浏览器解析网页内容。 invalid argument ... 1.jpg?source=xxx:知乎页面逻辑变了,图片 URL 后带?source=...参数,而 Windows 文件名不能含问号 → 需要把问号及之后的内容从字符串里截掉;老师临时偷懒把扩展名强行统一为.jpg(导致个别本来不是 jpg 的图破损)。- 代码里
time.sleep(5)礼貌性停顿 5 秒,爬太快会被封 IP。 - 爬虫伦理提醒:互联网上约 80% 流量是爬虫,但第一不要爬太快(会被封),第二不要爬个人/隐私信息(违法,"爬虫从入门到入狱",牢记网络安全法)。
演示三:人脸替换(约 28:40–44:00)¶
- 复杂度高的原因不是算法,而是依赖的第三方库多、还要下载训练好的模型文件(热心群众训练好,下载即用)。
- 依赖库:
opencv-python(导入名cv2):最有名的图像处理库,做曝光、改色、裁剪、旋转等图像处理,不含机器学习能力。numpy:矩阵运算库。图像本质就是矩阵(1920×1080 的图就是 1920×1080 的像素矩阵);调亮度就是矩阵里每个亮度值加一个数(修图拉曝光的原理)。dlib:机器学习库,用于人脸检测。难装的原因:pip 下载的是源代码包,要在本机编译(build)成 exe/dll,需要编译环境。报错CMake must be installed to build dlib透露两个信息:需要装 CMake;需要 build(编译)过程。- 虚拟机里 CMake 下载失败,改在本机(已装好 dlib)用 VS Code 演示;又暴露了模型
.dat文件找不到的问题——代码没写路径,按相对路径在当前目录找,把模型文件放到脚本同目录即可。 - 换脸流程:
change_face把图片转数组 → 检测两张图的人脸 → 对齐后把自己的脸贴到模特脸上。输入两个文件(模特target.jpg、自己的脸),输出合成图;两张脸比例/脸型接近时融合效果更好。 - dlib 安装遗留问题课下解决,模型文件发到微信群。
重点与难点¶
- 读报错:看到报错不要怕,先自己读报错内容再提问,"从第一节课学到最后一节课能学会就很厉害"。本课反复示范:ModuleNotFoundError → pip install;CMake 报错 → 装编译工具;FileNotFoundError → 检查当前目录。
- 环境变量 PATH:安装时勾选 Add to PATH 的意义;命令行执行依赖环境变量确定解释器位置。
- 当前目录影响程序行为:脚本里的相对路径相对于执行命令时所在目录解析,这是新手最常见的坑之一。
- 不要用 IDE 的 F5/箭头运行:多 Python 环境下不知道实际用了哪个解释器;先用命令行把环境、目录搞熟。
- 编码问题:中文系统默认 GBK、VS Code 默认 UTF-8,读写文本文件要显式指定
encoding="utf-8"。 - 安装路径规范:独立目录、无中文无空格。
- 编译型 vs 解释型(机器码/字节码/PVM)是本专业学生应理解的原理性内容。
关联内容¶
- 前置知识:上学期《计算机安全与维护》讲过的命令行(cd、路径)、环境变量、域名解析/DNS、包管理器概念。
- 课程结构预告:前段是语法基础(4 次课快速讲完),中段"文件与目录""模块与包"是过渡,后段(爬虫、网站、可视化等)是项目实战。
- turtle 例子对应"1.1 课程概述"中的示例;爬虫的正式讲解在后面"爬虫"章节;dlib 安装问题在下一次回放课(回放-02)开头解决;编码问题在"二进制/文件与目录"章节展开;
if __name__ == "__main__"在"模块与包"章节展开;Pandas 等第三方库在第 10 章"第三方库与虚拟环境"讲解。