相对导入指向谁

补全 resolve(current, rel):current 是当前模块全名,rel 是相对导入写法。一个点表示当前模块所在的包,每多一个点往上一层;点后面没有名字时表示那个包本身。返回被导入模块的全名。

开始练习 →

一导入就开始跑的模块

场景:同事写的数学工具模块自带演示:一 import 它,屏幕上就先打出演示,还停下来等人按回车——别的脚本根本没法正常用它。 任务:改 ~/work/tools/mathx.py:被 import 时什么都不打印、不等输入;直接 pyth

开始练习 →

把几个文件组织成包

场景:三个互相引用的文本处理文件,只有 cd 进它们的目录才跑得起来;别的项目想 from textkit import … 更是不行。 任务:在 ~/work/proj 下做到两件事:python3 -m textkit.cli samp

开始练习 →

只看第二十轮

循环要跑几百轮,你只想看 i == 20 那一轮时某个变量的值,最省事的办法是【0】。

开始练习 →

崩溃之后停在哪

用 python3 -m pdb 运行一个会崩的程序,输入 c 让它跑到崩溃,pdb 会停在【0】。

开始练习 →

记下第五轮的值

程序只关心最终结果,但你需要知道 i == 4 那一轮更新完之后 acc 是多少。补全后输出 那一轮的值/最终值。

开始练习 →

循环到一半时的变量

场景:一个累加程序只打印最终结果。现在怀疑中间某一轮就算歪了,需要看那一轮的现场。 任务:~/work/walk.py 只打印最终的 acc。找出 ~/题目.txt 里指定的那一轮(i 等于某个值)走到「检查点」那一行时 acc 的值。 可

开始练习 →

崩溃现场的那条记录

场景:一个建树程序读几十条记录,其中一条数据有问题。报错只说 'NoneType' object has no attribute,并没有说是哪一条。 任务:python3 ~/work/tree/tree.py 会崩。找出

开始练习 →

最省内存的读法

处理几百万行的日志文件,内存占用最小的读法是【0】。

开始练习 →

热点看哪一列

用 python3 -m cProfile -s cumtime 找热点时,最该先看的是【0】最大的函数。

开始练习 →