
在为学校图书馆写一个基于命令行的监控脚本,准备用 click 来实现交互。但是现在遇到一个问题,就是 @option 的个数太多,就像下面这样:
import click @click.command() @click.option('-a') @click.option('-b') @click.option('-c') @click.option('-d') ... @click.option('-z') def myscript(a, b, c, ..., z): if a: ... if b: ... ... if z: ... 由于 @option 太多,必须要在myscript下面用大量的 if 语句一一检查用户是否给出了某个选项,这样的话代码结构太丑了,请问对这样的情况有什么好的解决方法?
1 bonfy 2017 年 3 月 11 日 via iPhone 最近有个 python-fire 很火 可以看看 至少不用写这么多 if |
2 PythonAnswer 2017 年 3 月 13 日 pocoo 喜欢滥用 @,实在是丑啊。 |
3 siteshen 2017 年 3 月 13 日 没用过 click ,不过 decorator 太多是可以抛弃语法糖,直接用循环解决: def myscript(self, ...): pass for option in reversed(['-a', '-b', ..., '-z']): myscript = click.option(option)(myscript) myscript = click.command()(myscript) |