Python optparse 默认值与函数默认值
我正在编写一个 python 脚本,我希望能够从命令行调用它并作为库函数导入。 理想情况下,命令行选项和函数应使用同一组默认值。 允许我在两个地方重用一组默认值的最佳方法是什么?
这是具有重复默认值的当前代码。
from optparse import OptionParser
def do_stuff(opt1="a", opt2="b", opt3="c"):
print opt1, opt2, opt3
if __name__ == "__main__":
parser = OptionParser()
parser.add_option("--opt1", default="a")
parser.add_option("--opt2", default="b")
parser.add_option("--opt3", default="c")
#parser.set_defaults(opt1="a")
options, args = parser.parse_args()
do_stuff(*args, **vars(options))
I'm writing a python script which I would like to be able to both call from the command line and import as a library function.
Ideally the command line options and the function should use the same set of default values.
What is the best way to allow me to reuse a single set of defaults in both places?
Here's the current code with duplicate defaults.
from optparse import OptionParser
def do_stuff(opt1="a", opt2="b", opt3="c"):
print opt1, opt2, opt3
if __name__ == "__main__":
parser = OptionParser()
parser.add_option("--opt1", default="a")
parser.add_option("--opt2", default="b")
parser.add_option("--opt3", default="c")
#parser.set_defaults(opt1="a")
options, args = parser.parse_args()
do_stuff(*args, **vars(options))
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我会通过内省感兴趣的函数来适当地设置选项和默认值来处理它。例如:
I'd handle it by introspecting the function of interest to set options and defaults appropriately. For example:
这是解决方案 - 如果您只需要关键字参数,那么这很简单 - 只需使用 locals.update 即可。以下处理位置参数和关键字参数(关键字参数覆盖位置参数)。
输出:
Here's the solution - it's trivial if you only need keyword arguments - just use locals.update. Following handles both, positional and key word args (key word args overrides positional).
Output:
Alex 的检查解决方案非常强大!
对于轻量级程序,您也可以简单地使用:
The inspect solution by Alex is very powerful!
For lightweight programs, you could also simply use this: