为什么 main 要收 argv
整条路线里 main 一直写成 main(argv),而不是在函数里面直接读 sys.argv。这样写最大的收益是【0】。
交付前最该验什么
工具写完了。交付前最能一次暴露问题的验法是【0】。
整套工具跑一遍
下面是组装好的 conv 精简版。运行它,看五组参数各给出什么(结果或退出码): import argparse LEN = {"m": 1.0, "km": 1000.0} class Usag
第一步:把解析器搭起来
补全 build_parser:三个子命令 temp / len / mass,每个都有 value(浮点数)、--from(存到 src,默认分别 c / m / kg)和 --to。输出解析出的子命令名和三个默认起点单位。
第二步:换算核心
补全 convert:温度先统一成摄氏再换到目标;长度和质量查各自的表,单位不在表里抛 ValueError。输出四次换算的结果。
第三步:把 main 接起来
解析器和换算都有了。补全 main:解析失败交回 2、没给子命令把帮助打到 hlp 并交回 2、单位错交回 3、成功打印结果交回 0。输出五次调用的退出码、结果管道的内容、帮助有没有打出来。
第四步:给工具写一个测试壳
补全 run:调用一次 main,把这次打到 out 的内容和退出码一起交回来(每次调用前把 out 清空)。输出三组用例的「结果:退出码」。
交付:五条验收条款一起过
run 已经给好。补全五条验收:正常换算对、单位错交回 3、用法错交回 2、不给子命令打帮助且交回 2、错误不进结果管道。输出五个 1/0。
装成命令之后,机器上多了什么
把 conv.py 装成一条 conv 命令之后,和之前敲 python3 conv.py 相比,真正变了的是【0】。
先把要交的数算出来
真机上会用到这个工具算 3 km 换米、1 mi 换米。先在这里把它们跑一遍,看输出格式: LEN = {"m": 1.0, "km": 1000.0, "mi": 1609.34