简介这份《千锋教育Python入门教程》PDF面向K12阶段编程初学者及零基础自学者也适合希望系统梳理Python学习路线的成年人用来解决入门阶段知识点零散、缺少学习框架的问题。文件共1个PDF包体约663KB篇幅精炼便于在电脑或移动设备上随时查阅。教程从变量、数据类型、条件与循环、函数和模块等基础语法切入延伸到异常处理、面向对象、文件操作及常用第三方库并概览PyQt桌面开发、Linux指令与Shell、运维自动化、MySQL/Oracle数据库开发、HTML5/CSS、JavaScript与jQuery、爬虫项目、Django/Flask网站后台、机器学习与数据分析、树莓派物联网等方向同时整理了配套视频课程链接索引便于按阶段对照学习。已有992人学习适合作为Python入门路线图与知识点速查手册帮助读者建立全栈学习脉络并明确后续进阶方向。1. 一张能对上号的 Python 学习地图很多人第一次翻 Python 入门教程都会生出一种「章节接不上」的错觉前一页还在讲列表推导式翻过去突然变成 Linux 命令再往后又跳到数据库连接和机器学习。这套面向 K12 阶段学生与零基础转行者的课程文档资料铺的其实是一条四层路线——语法地基、工程能力、应用方向、项目实战。课程体系按 23 周、10 大阶段组织从 Python 2.7.3 与 3.x 的语法讲起一路覆盖 PyQt、Linux、数据库、Web 前端与框架、爬虫、数据分析、机器学习直到树莓派这类硬件方向。它的价值不在于「教得多」而在于把每个方向需要的前置知识标了出来想学爬虫先过 HTTP 和字符串处理想学机器学习先过 NumPy 和 Pandas。适合谁适合已经能写几十行脚本、但说不清下一步该往哪走的人也适合复习阶段想快速定位薄弱环节的人。2. 语法地基变量、容器与流程控制的复习重点语法部分是整套课程里最容易被「快速跳过」的一段因为看起来都懂。但真正写项目时卡住人的恰恰是这一段选错容器导致后面到处打补丁默认参数写错导致数据莫名被污染模块导入路径不对导致脚本换个目录就跑不起来。课程前段把 Python 2.7.3 和 3.x 并列讲复习时要留个心眼——打印语句、整除、字符串编码这三处两个版本差异最大别把旧写法当成标准写法记进去。2.1 四种内置容器选错了后面全是补丁列表、元组、字典、集合是语法阶段的核心也是最该背下来的一张表。它们的差别不在「能不能存数据」而在可变性、有序性和查找代价这三点直接决定了后面代码的形状。容器写法可变有序查找代价典型场景list[1, 2, 3]是是O(n)顺序存取、需要增删tuple(1, 2)否是O(n)固定结构、可做字典键dict{k: 1}是是3.7O(1)按键取值、计数、映射set{1, 2}是否O(1)去重、交并差# 四种容器的典型用法选对容器后面的循环能少写一半 scores [88, 92, 79] # 有序可改适合按下标或顺序遍历 point (3, 4) # 不可改适合表达固定结构 student {name: A同学, age: 18} # 按键取值平均 O(1) tags {python, k12} # 自动去重支持 | - 运算 print(student.get(score, 0)) # 键不存在时给默认值比 in 判断更短 print(tags {python, linux}) # 交集{python}上面这段的重点是get和集合运算。dict[key]在键不存在时会直接抛KeyError这是新手脚本崩溃的高频原因而get(key, default)把「取值」和「兜底」合成一步。集合的交并差在去重统计、权限比对、标签匹配里用得极多比手写双层循环快得多。另一个容易被忽略的点是元组能当字典的键列表不能因为列表可变、不可哈希——这条规则会在你写缓存、做分组统计时突然冒出来。2.2 流程控制与函数边界条件比语法本身重要if / for / while的语法十分钟就能看完真正需要反复确认的是边界range(1, 10)取不到 10for...else的else在循环正常结束没被break时执行while的退出条件如果依赖浮点数比较很容易变成死循环。这些点在课程示例里都是一笔带过但写业务脚本时全是硬伤。函数部分最值得单独拎出来的是参数传递和作用域。Python 的参数是「对象引用传递」不可变对象在函数内重新赋值不影响外部可变对象在函数内被修改则会传出去。最经典的坑是可变默认参数# 默认参数只在函数定义时求值一次可变对象会被所有调用共享 def add_item_bad(item, box[]): # 反面写法 box.append(item) return box def add_item_safe(item, boxNone): # 正确写法 if box is None: box [] box.append(item) return box print(add_item_bad(1), add_item_bad(2)) # [1, 2] [1, 2]第二次调用带着上次的数据 print(add_item_safe(1), add_item_safe(2)) # [1] [2]每次都是新的box[]这个默认值在函数定义时就被创建之后所有不传该参数的调用共用同一个列表对象于是数据越积越多。改成None再在函数体内初始化是标准解法。作用域按 LEGB 顺序查找局部、闭包、全局、内置。函数内给变量赋值就会把它变成局部变量想改全局必须显式声明这一点在读别人代码时经常造成误判。2.3 模块与包导入路径是第一个「工程问题」从单文件脚本走向多文件第一道坎就是导入。同一个目录下的a.py被b.py导入靠的是解释器的搜索路径而不是「文件就在旁边」这种直觉。理解sys.path的构成能省掉大量「为什么本地跑得通、换个目录就报ModuleNotFoundError」的时间。# 一个文件既能被导入、又能直接运行靠的就是这个判断 def main(): print(running as script) if __name__ __main__: main() # 只有直接运行时才执行被 import 时不执行__name__在直接运行时是__main__被导入时是模块名。这个判断的意义在于把「库代码」和「测试入口」隔开别人导入你的模块时不会顺带跑一遍测试逻辑。包则是带__init__.py的目录它让一组模块有了命名空间。实际复习时建议亲手建一个三层目录包 → 子包 → 模块互相导入一次把绝对导入和相对导入都跑通这比看十页说明都管用。3. 工程化这一步面向对象、异常处理与第三方库语法过关之后代码规模一上来就会暴露新问题变量满天飞、错误一崩到底、重复逻辑复制粘贴。这一层对应课程里「3.x 进阶与第三方库」的部分核心就三件事——用类和对象组织状态用异常处理兜住失败路径用现成的库避免重复造轮子。再往后一步是把命令行脚本包装成有界面的桌面工具。3.1 类与对象self、构造方法与继承的边界类最容易讲糊涂的地方是self。它不是关键字只是实例方法的第一个参数约定俗成名叫self指向调用该方法的实例本身。写类的时候先问三个问题这个对象有哪些属性在__init__里初始化、有哪些行为方法、哪些属性是所有实例共享的类属性。class Student: school 某高校 # 类属性所有实例共享 def __init__(self, name, score): self.name name # 实例属性每个对象各一份 self.score score def level(self): return 及格 if self.score 60 else 不及格 a Student(A同学, 92) b Student(B同学, 55) print(a.school, a.level(), b.level()) # 某高校 及格 不及格类属性和实例属性的区别是高频易错点通过实例给类属性赋值实际是在实例上新建了一个同名属性类属性本身没变其他实例也看不到变化。继承则是把公共部分提到父类子类用super()调用父类构造。实际项目里继承层级不建议超过两层超过两层通常说明该用组合而不是继承了。3.2 异常与文件操作失败路径也要写完整脚本和程序的区别之一是脚本假设一切顺利程序假设随时会出错。文件不存在、网络超时、数据库连不上、编码不对这些都不是「意外」而是必然会发生的分支。try / except / else / finally四个块各司其职捕获、处理、无异常时执行、无论如何都执行。# 读文件的标准写法指定编码 with 自动关闭 精确捕获异常 try: with open(data.txt, r, encodingutf-8) as f: lines f.readlines() except FileNotFoundError: print(文件不存在走兜底逻辑) except UnicodeDecodeError: print(编码不对试试 gbk) else: print(f读取成功共 {len(lines)} 行) finally: print(无论成败都会执行适合放清理动作)这里有两个关键点。一是with语句保证文件句柄在离开代码块时关闭即使中途抛异常也不会泄漏。二是encodingutf-8必须显式写不写会走系统默认编码在不同平台上结果完全不同。异常捕获要尽量精确到具体类型直接except Exception会把真正的 bug 也吞掉排查时非常痛苦。3.3 第三方库地图别在入门阶段把库当黑匣子课程里列出的第三方库不少复习时不必逐个深入但要清楚每个库解决哪类问题、输入输出是什么形状。用一张表把边界划清比背 API 有用得多。库解决的问题核心对象前置要求NumPy数值计算、数组运算ndarray无Pandas表格数据的清洗与统计DataFrameNumPyMatplotlib数据可视化Figure / Axes无Scikit-learn机器学习建模与评估estimatorNumPy、PandasRequestsHTTP 请求Response无import numpy as np # 向量化一次算完整个数组不要写 for 循环逐个算 arr np.array([1, 2, 3, 4, 5]) print(arr * 2) # [ 2 4 6 8 10] print(arr.mean(), arr.std()) # 均值 3.0标准差 1.414...向量化是 NumPy 的核心价值同样的计算用 Python 循环和用数组运算可能差出几十倍。参数上要注意dtype整型和浮点型在除法、求和时的行为不同混用会出现精度问题。Pandas 的DataFrame可以理解成带行标签和列名的二维表groupby、merge、fillna三件套覆盖了大部分清洗场景。把库当黑匣子直接调出错时连错误信息都看不懂这是入门阶段最该避免的习惯。3.4 从命令行到桌面PyQt 补上界面这一块PyQt 在整套体系里属于「可选但值得过一遍」的模块。它的价值不是让你去做商业软件而是理解「事件驱动」这种编程模型程序不按代码顺序从头跑到尾而是等用户点击、输入再触发对应的处理函数。这套模型在后面学 Web 开发、异步编程时还会再遇到一次。import sys from PyQt5.QtWidgets import QApplication, QWidget, QPushButton app QApplication(sys.argv) win QWidget() win.setWindowTitle(最小窗口) btn QPushButton(点我, win) # 父控件决定按钮归属 btn.clicked.connect(lambda: print(按钮被点击)) # 信号与槽事件 → 处理函数 win.show() sys.exit(app.exec_())QApplication是每个界面程序唯一的事件循环入口connect把「信号」点击和「槽」处理函数绑在一起。参数上要留意父控件关系不给父控件的控件不会显示在窗口里。这套代码跑通一次界面编程的门就算推开了剩下的都是控件堆叠和布局管理。4. 应用层三块地基Linux、数据库与 Web 开发语法和工程能力是内功应用方向是招式。课程覆盖的方向看起来杂实际可以归成三块地基操作系统层Linux 与 Shell、数据层MySQL 与 SQL、展示层HTML/CSS/JS 与 Web 框架。这三块不管后面走运维、爬虫还是后端都用得上跳过任何一块后面的方向学习都会反复回头补课。4.1 Linux 命令行与 Shell运维自动化的真正起点Linux 部分不需要背全所有命令需要的是建立几个基本认知一切皆文件、权限分三级属主、属组、其他、管道把上一条命令的输出交给下一条。把这三点吃透大部分命令都能靠猜。课程中运维自动化那一段本质上就是把这些命令组合起来写进脚本再交给定时任务。# 三个在运维脚本里天天出现、但入门阶段常被跳过的组合 find /var/log -name *.log -mtime 7 -delete # 按名字 修改时间筛出旧日志并删除 ps aux | grep python | awk {print $2} # 取所有 python 进程的 PID df -h | awk NR1 $50 80 {print $6} # 挑出使用率超过 80% 的分区第一行用-mtime 7表示「修改时间在 7 天以前」这是日志清理的标准写法。第二行是管道组合ps列进程、grep过滤、awk取第二列注意grep自己也会出现在结果里严谨写法要再加一层过滤。第三行$50的作用是把带百分号的字符串强制转成数字再比较NR1跳过表头。这些细节不写出来脚本在本地看着能跑换台机器就翻车。4.2 数据库SQL 是绕不过去的基本功数据库模块对应 MySQL 与 Oracle 的开发内容但复习时抓住 MySQL 就够了语法层面两者相通。要练的不是「回忆出所有关键字」而是四件事建表时定好字段类型和约束、写出正确的增删改查、理解事务与提交、会从 Python 里连库执行。-- 建一张最小表字段类型和约束是后面所有查询的地基 CREATE TABLE student ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(32) NOT NULL, score DECIMAL(5,2) DEFAULT 0 );PRIMARY KEY保证唯一并自动建索引AUTO_INCREMENT省去手工编号DECIMAL而不是FLOAT存分数是为了避免浮点误差NOT NULL让脏数据在入库前就被拦住。这些约束在建表时加成本最低等数据堆起来再补清洗成本要高一个量级。import pymysql # 连接 → 游标 → 执行 → 提交 → 关闭五步一步都不能省 conn pymysql.connect(host127.0.0.1, port3306, userdemo, password******, databaseschool) try: with conn.cursor() as cur: cur.execute(INSERT INTO student(name, score) VALUES (%s, %s), (A同学, 92.5)) conn.commit() # 不提交数据只在事务里连接一关就没了 finally: conn.close()%s是参数占位符用参数化传值而不是字符串拼接既避免引号转义问题也挡住注入风险。commit()是最容易被忘的一步执行成功但没提交重新连库时数据凭空消失这类问题排查起来相当耗时。4.3 前端最小集与 Web 框架先能看见页面再谈后端HTML5、CSS、JavaScript 加 JQuery 这一串在入门阶段只需要达到「能改页面、能看懂结构」的程度。HTML 负责内容和结构CSS 负责布局和样式JavaScript 负责交互JQuery 是简化 DOM 操作的库。真正要建立的概念是「前端发请求、后端返回数据」这条链路。框架定位上手成本适合场景Flask微框架只给核心低小工具、接口服务、爬虫后台Django全家桶自带 ORM 与管理后台中内容型站点、需要快速搭后台Django 的优势是「开箱即用」模型、路由、模板、后台管理一应俱全代价是要按它的约定组织目录Flask 反过来核心极简想要什么自己装灵活但样板代码要自己写。选哪个不影响学的深度先跑通「一个路由返回一段文字」再到「查数据库渲染页面」这条最小链路框架的骨架就清楚了。4.4 数据方向与硬件方向两条岔路的入口数据方向分两层。数据分析层用 Pandas 做清洗、聚合、透视把原始表格变成能看懂的结论机器学习层在这个基础上做特征工程、训练、评估线性回归、决策树、神经网络这些算法在课程里都有对应示例。学习路径应该是「先会用 Pandas 处理一份真实表格再谈建模」反过来直接调算法库连输入数据的形状都搞不清楚。硬件方向以树莓派为代表核心是 GPIO 引脚控制和传感器数据读取本质上是把 Python 脚本从「处理数据」扩展到「控制物理设备」。这两条路在入门阶段都只需要跑通一个最小例子目的是知道它们长什么样而不是立刻深入。5. 最容易被跳过的五处易漏点与易错点这一章是我自己复习时踩出来的清单。它们有个共同特征语法书上不会专门标红课程示例里也不会出错但你一动手就会撞上。5.1 语法层三个「看懂了但写不出」的坑易漏点一可变对象的浅拷贝。为什么漏b a看起来像复制实际只是多了一个指向同一对象的名字copy()对嵌套结构也只复制外层。 怎么补记住「赋值不复制浅拷贝只一层嵌套必须深拷贝」。列表套列表、字典套字典的场景一律用copy.deepcopy()并养成在修改前打印id()确认是不是同一个对象的习惯。import copy a [[1, 2], [3, 4]] b a # 同一对象改 b 就是改 a c a.copy() # 浅拷贝内层列表仍共享 d copy.deepcopy(a) # 深拷贝完全独立易漏点二文件编码与换行符。为什么漏本地环境默认编码和服务器不一致本地一切正常上线全是乱码Windows 与 Linux 的换行符差异还会让文本比对数莫名其妙地失败。 怎么补open()一律显式写encodingutf-8处理跨平台文本时用newline保留原始换行读到的内容先做一次strip()别直接拿去比较。易漏点三与is混用、可变对象做字典键。为什么漏小整数和短字符串有缓存机制is偶尔也能返回 True让人误以为两者等价。 怎么补判断值相等用判断是否为同一个对象包括是否为None才用is。字典键、集合元素必须是可哈希对象列表和字典不能放进去需要时先转成元组。5.2 工程层两个「学到一半才发现」的坑易漏点四相对路径依赖当前工作目录。为什么漏在项目根目录下运行脚本一切正常换个目录执行、或者被别的程序调用文件就找不到了。相对路径是相对「运行时的工作目录」不是相对脚本文件。 怎么补涉及文件读写的地方统一用os.path.dirname(os.path.abspath(__file__))拿到脚本所在目录再拼绝对路径或者把配置路径集中到一个常量模块里全项目引用同一处。易漏点五只学框架不学底层调库调成黑匣子。为什么漏框架和算法库的入门示例都太顺了跑通一次就以为学会了直到数据量、并发量或者字段类型一变报错信息完全看不懂。 怎么补每学一个框架至少搞清楚它替你做了什么——Web 框架要能说出请求从路由到视图再到响应的完整链路机器学习库要能说出特征、标签、训练集、评估指标分别对应哪个参数。判断标准很简单能不能不查文档用自己的话把这段流程讲一遍。注意这五条不需要一次全记住但每一条都值得单独写个小脚本验证一次翻车的记忆比看十遍文档都牢。6. 复习清单把 23 周的内容压成一张自查表复习最怕的是「从头再看一遍视频」效率极低。更实际的做法是拿一张表逐项自检能讲清楚原理并写出可运行代码的划掉讲不清楚的回去补对应模块。下面这张表是按课程 10 大阶段压缩出来的自查维度K12 阶段的学生可以按周拆开用转行复习的人可以按模块跳着过。模块自查标准高频失分点语法基础能徒手写出四种容器的增删改查可变默认参数、range边界函数与模块能拆出可复用函数并组织成包作用域误判、导入路径面向对象能设计两个类的继承或组合关系类属性与实例属性混淆异常与文件能写出带兜底的读写逻辑忘写 encoding、漏 commit第三方库能说出每个库的输入输出形状把库当黑匣子Linux 与 Shell能用管道组合出统计命令相对路径、权限数据库能建表并完成一次参数化查询SQL 拼接、事务未提交Web 开发能跑通路由到页面渲染的链路前后端数据格式对不上数据方向能用 Pandas 完成一次完整清洗索引错位、类型混淆项目实战能独立复现一个爬虫或小工具异常未捕获、无日志表里最后一行最值得单独说。项目实战不是为了「做完一个作品」而是为了把所有零散知识点串成一条链。爬虫这个方向特别适合当第一个完整项目请求、解析、存储、异常处理、定时运行五件事全覆盖。写的时候刻意加上日志和重试跑通一次前面九个模块的知识会自动连起来。再给一个我自己一直在用的笨办法每个模块学完强迫自己用三句话写一张卡片——这个模块解决什么问题、核心的 API 或命令有哪些、最容易错在哪。卡片攒到十几张复习时先翻卡片哪张讲不顺就回去看哪段。这比重新刷一遍视频快得多也能暴露出「以为会了其实不会」的地方。从那以后我每次学新模块都强制走一遍「写最小可运行例子 → 故意制造一次报错 → 把报错和修法记进卡片」这三步再也不敢只看不写。希望帮到你。这套课程配套的视频与文档资料按基础、进阶、方向实战分成了若干部分从语法到树莓派设备都有对应内容按上面这张表的顺序去取用比从头顺播省时间得多。本文还有配套的精品资源点击获取