共 19 节,按顺序
- 120 分钟
你好,Python
欢迎。如果你以前从没写过代码,那你来得正是地方。Python 是一门编程语言,也就是用一种看着有点像英语的东西,给计算机一步一步下指令。这一课结束时,你会跑完自己的第一行 Python 代码,也会知道变量是什么。这就是全部任务。我们不着急。
VariablesPrintRepl - 225 分钟
数字与字符串
欢迎回来。在第 01 课里你运行了第一个 Python 文件,也知道了变量就是一个贴着标签、用来装值的盒子。今天来看你最常用到的两类值:数字(用来做运算)和字符串(用来处理文本)。学完这一课,你就能用 Python 做加、减、乘,也会用最省事的办法把一个值放进一句话里。
IntegersFloatsString concatenationF-strings - 315 分钟
Asking the User a Question
到目前为止,你写的程序每次点播放都做同一件事。跑十遍,得到同样的十个答案。它们有用,但还算不上工具,因为工具是一个人能拿去对着自己的问题使的东西。
Input()String return typeInt() and float() conversionInteractive programs - 430 分钟
控制流
到目前为止,你的程序都是从上到下一行接一行直着跑完的。写个问候语这样没问题,但大多数有用的程序需要做选择(「密码对上了就让他进来」),也需要重复干活(「给名单上的每个人发一条提醒」)。让你能做到这些的工具叫做控制流(control...
If/elif/elseComparison operatorsBoolean operatorsWhile loopsFor loopsBreak and continue - 530 分钟
列表与元组
到目前为止,每个变量装的都是单独一个值:一个数字,一个字符串。而真实的程序通常需要把一小组彼此相关的值放在一起,比如一份来客名单,或者一个点的坐标。这一课介绍 Python 做这件事的两种方式,而它们之间的区别,没有你一开始想的那么大。
List creationIndexingSlicingAppendPopIteration+2 - 630 分钟
字典与集合
欢迎回来。当顺序重要、而且你按位置取元素时,列表非常好用;但现实中很多数据是按名字组织起来的:一个人有年龄,一个国家有首都,一件产品有价格。本课介绍两种新的容器类型,它们能干净利落地处理这类活儿。
Dict basicsGet with defaultIterate keysIterate valuesIterate itemsSets+1 - 730 分钟
函数
欢迎回来。到目前为止,你用过几个 Python 自带的函数,比如 print() 和 len()。这一课你要自己写函数了。函数是一段起了名字的代码,你想运行多少次就运行多少次,每次还可以喂进不同的输入。会写函数之后,大程序就不再吓人了,因为你是用一个个有名字的小块把它搭起来的。
DefParametersDefault valuesKeyword arguments*args and **kwargsReturn values+1 - 825 分钟
推导式 (Comprehensions)
你已经会写一个 for 循环,一次一项地建起一个新的列表、字典或集合。推导式(comprehension)就是把同一个循环写在一行里的更短写法。结果一样,敲的字更少,而且眼睛习惯之后,扫一眼就能读懂。
List comprehensionsDict comprehensionsSet comprehensionsConditional expressionsGenerator expressionsReadability tradeoffs - 930 分钟
文件与 IO
只往终端打印东西的程序,一结束就把一切都忘了。下一步,也是让 Python 忽然显得有用起来的那一步,是教它读写磁盘上的文件。这一课里你会打开一个文件、往里写几行、再读回来,并学会那一小把足以覆盖你今后几乎所有文件活儿的套路。
Open with withReading linesWriting filesPathlib.PathJson readJson write - 1030 分钟
模块与包 (Modules and Packages)
到现在为止,每个程序都住在单独一个文件里。学的时候这样没问题,但真实的项目会把代码摊到很多文件上,好让每个文件都短小、专注。这一课告诉你 Python 怎么让你做到这一点,用的是模块(单个文件)和包(装着文件的文件夹)。
ImportFrom importWriting your own moduleIf __name__ == "__main__"Packages__init__.py - 1135 分钟
类与 OOP
欢迎来到 Python 里比较大的一个概念。到目前为止,你一直在用内置的工具(字符串、列表、字典、函数)来组织数据。本课你将学会写一个类,从而设计出属于你自己的一种种东西,并看到类如何把数据和行为打包在一起。慢慢来,这一课读得慢才有收获。
Class definition__init__Instance attributesClass attributesMethods__repr__ - 1230 分钟
继承与组合
第 10 课里你从零开始写了类。在真实的代码里,类很少独来独往。有时一个类是另一个类的更具体版本(Dog 是一种 Animal),有时一个类是用别的类当零件搭起来的(Car 里装着一个 Engine)。这一课把这两样工具都给你,并帮你挑对该用哪一样。
SubclassingSuper()Method overridingCompositionWhen to choose composition - 1330 分钟
异常处理
你已经见过错误了。每当你把名称打错、除以零,或者向列表要一个不存在的索引时,Python 就会停下来,打印出一大片红色文字。这一大片文字叫做堆栈跟踪 (traceback),而错误本身叫做异常 (exception)。这一课教你冷静地读懂这些堆栈跟踪,并且有意识地决定:出问题时,程序到底该怎么做。
TryExceptElseFinallyRaiseCustom exception classes+1 - 1430 分钟
迭代器与生成器 (Iterators and Generators)
前面几课你已经会写 for item in something: 了。这一课我们掀开盖子,看看每次这个循环跑起来时 Python 到底在做什么。看明白之后,只要再学一小点新语法 yield,你就能自己造出适合放进循环里的对象。
Iterator protocolYieldGenerator functionsGenerator expressionsLazy evaluation - 1530 分钟
装饰器 (Decorators)
欢迎来到 Python 比较难缠的话题之一。装饰器(decorator)是你套在一个函数外面的一层小包装,让它多出一点额外行为(记日志、计时、做一次权限检查),而不必改动这个函数自己的代码。你大概在框架代码里见过的那些 @某个名字 的行就是装饰器,这一课结束时,你会清楚地知道它们在干什么。
Functions are objectsWrapper functions@decorator syntaxFunctools.wrapsParametrized decorators - 1625 分钟
上下文管理器 (Context Managers)
欢迎回来。从第 08 课开始,你一直在写 with open(...) as f:,并且相信代码块结束时文件会被关掉。这一课要把这个盒子打开。你会弄明白 with 语句到底做了什么,以及怎么写自己的上下文管理器,让你手上任何一对"准备"与"收尾"的操作都能搭上同一套语法。
With statement__enter__ and __exit__Writing your own context managerContextlib.contextmanager - 1740 分钟
并发:线程与异步 (Async)
欢迎回来。到目前为止,我们的程序都是一次做一件事,从上到下,这样也挺好。麻烦出在程序把大部分时间花在等待上的时候(等一个网站回应,等一个文件加载,等数据库回话)。这些等待全是浪费掉的,而并发就是我们让它们派上用场的办法:一次照看好几段等待。
GIL in plain languageConcurrent.futures.ThreadPoolExecutorAsyncio basicsAsync defAwaitWhen to use threads vs async - 1835 分钟
使用 pytest 进行测试
欢迎回来。到现在为止,你都是运行代码,然后用眼睛看输出对不对。几行代码这样还行,可你一改动什么东西,就得把所有东西重新看一遍。测试会替你做这件重新检查的活,每次都做,几秒钟就完事。它们能抓住那些你本来会漏掉的小破损,也让你敢放心改代码,因为你可以明明白白地证明旧的行为还是好的。
Test functionsAssertRunning pytestParametrizeFixtures - 1935 分钟
打包与部署
到目前为止,你写的 Python 都是自己敲 python something.py 跑起来的,而且也只有你自己在跑。这一课讲的就是那一小步,基本上是机械操作:把一个脚本变成别人可以装到自己机器上、当成一条真正的命令来用的东西。你在这里几乎不用写新的 Python...
Pyproject.tomlPip install -eConsole scriptsBuilding a wheelPublishing to PyPI
用你的语言学习 Python
每一节课、测验和导师回复都以你的语言显示。AI 导师会用你提问的语言来回答。
Roles that use Python
See how hiring teams interview engineers on Python, in production-like environments.
Senior Python Developer
Hire senior Python developers in real Django, FastAPI and Flask codebases with real load and real test suites. Live or take-home, fully recorded.
See the interviewBackend Engineer (Go, Rust, Java)
Hire backend engineers in real services with real databases, real concurrency and real latency budgets. Live or take-home, fully recorded.
See the interviewData Engineer
Hire data engineers in workspaces with real Spark, dbt and Airflow pipelines. Schema drift, bad data and reruns included.
See the interview