解析结果是什么样
argparse 解析完,把结果装进一个对象里。运行下面这段程序,看它取出了什么: import argparse p = argparse.ArgumentParser() p.add_argument("value"
补全:让位置参数变成数字
下面的解析器还没把 value 声明成数字。补上 type,让它算出 37 摄氏度对应的华氏度。
补全:加一个带默认值的选项
给解析器加一个 --to 选项,默认值是 f。两次调用,一次给了 --to k,一次没给,把两次取到的目标单位用 / 拼起来输出。
为什么要子命令
工具要同时支持温度、长度、质量三种换算。用 conv temp …、conv len … 这样的子命令来分,最主要的好处是【0】。
子命令的名字存在哪
sub = p.add_subparsers(dest="cmd") 之后,用户敲的是 len 还是 temp,解析完从【0】读出来。
--from 不能直接当属性名
长度子命令想要一个 --from 选项。写成 l.add_argument("--from", dest="src") 而不是直接用,是因为【0】。
两个子命令各走各的
下面的解析器有 temp 和 len 两个子命令。运行这段程序,看两次解析各拿到了什么: import argparse p = argparse.ArgumentParser() sub = p.add_subparsers(dest=
选项放前面还是后面
子命令的选项必须写在子命令后面。运行下面这段程序,看它数出来的结果: import argparse p = argparse.ArgumentParser() p.add_argument("--quiet", ac
补全:加上第二个子命令
解析器已经有了 temp。补上 len 子命令:一个 value 位置参数(浮点数)和一个默认值为 m 的 --to 选项,让最后一行打出两次解析的目标单位。
补全:按子命令分发
解析已经做好,两个子命令都能认。补全 run:按 a.cmd 决定调哪个换算函数,输出两次调用的结果(用 / 拼)。