补全:按顺序列出要做的

(RULES 里每个目标记着它的依赖和命令;stale(目标) 判它要不要重做:目标不存在、或任何一个依赖比它新、或依赖自己就要重做;plan(目标) 按依赖先、目标后的顺序列出要重做的目标。) 贯穿 n05 的构建规则(目标 ← 依赖:命

开始练习 →

补全:执行并更新时间

(RULES 里每个目标记着它的依赖和命令;stale(目标) 判它要不要重做:目标不存在、或任何一个依赖比它新、或依赖自己就要重做;plan(目标) 按依赖先、目标后的顺序列出要重做的目标。) 贯穿 n05 的构建规则(目标 ← 依赖:命

开始练习 →

补全:谁被谁用到

(RULES 里每个目标记着它的依赖和命令;stale(目标) 判它要不要重做:目标不存在、或任何一个依赖比它新、或依赖自己就要重做;plan(目标) 按依赖先、目标后的顺序列出要重做的目标。) 贯穿 n05 的构建规则(目标 ← 依赖:命

开始练习 →

为什么要拆成多个模块

一个 2000 行的 main.py 拆成 app/cli.py、app/core/calc.py 这样的多个文件,最主要的好处是【0】。

开始练习 →

包和 __init__.py

贯穿 n06 的工程: app/ __init__.py cli.py # import app.core.report, app.util util.py core/ __init__.py

开始练习 →

循环 import 是什么

app/core/report.py import 了 app.cli,而 cli 本来就 import 了 report。结果是【0】。

开始练习 →

这张图里谁依赖谁

(IMPORTS 记每个模块 import 了谁;deps_of 一路找到全部间接依赖;who_imports 找谁用了它;has_cycle 判有没有循环 import;order 给出「被依赖的先、依赖别人的后」的顺序。) 贯穿 n06

开始练习 →

加一条反向 import

(IMPORTS 记每个模块 import 了谁;deps_of 一路找到全部间接依赖;who_imports 找谁用了它;has_cycle 判有没有循环 import;order 给出「被依赖的先、依赖别人的后」的顺序。) 贯穿 n06

开始练习 →

补全:全部间接依赖

(IMPORTS 记每个模块 import 了谁;deps_of 一路找到全部间接依赖;who_imports 找谁用了它;has_cycle 判有没有循环 import;order 给出「被依赖的先、依赖别人的后」的顺序。) 贯穿 n06

开始练习 →

补全:有没有环

(IMPORTS 记每个模块 import 了谁;deps_of 一路找到全部间接依赖;who_imports 找谁用了它;has_cycle 判有没有循环 import;order 给出「被依赖的先、依赖别人的后」的顺序。) 贯穿 n06

开始练习 →