【发布时间】:2015-01-03 08:12:43
【问题描述】:
以这种方式获取命令行参数有什么本质上的错误吗?我的意思是将参数解析放入它自己的函数中。它会被认为是非 Pythonic 还是更多?
#!/usr/bin/python
import argparse
def getArgs(argv=None):
parser = argparse.ArgumentParser(description="calculate X to the power of Y")
group = parser.add_mutually_exclusive_group()
group.add_argument("-v", "--verbose", action="store_true")
group.add_argument("-q", "--quiet", action="store_true")
parser.add_argument("x", type=int, help="the base")
parser.add_argument("y", type=int, help="the exponent")
return parser.parse_args(argv)
if __name__ == "__main__":
argvals = None # init argv in case not testing
argvals = '6 2 -v'.split() # example of passing test params to parser
args = getArgs(argvals)
answer = args.x**args.y
if args.quiet:
print answer
elif args.verbose:
print "{} to the power {} equals {}".format(args.x, args.y, answer)
else:
print "{}^{} == {}".format(args.x, args.y, answer)
【问题讨论】:
-
不,没关系。
-
您可以使用单个选项来表示详细程度,但由于您有 3 个级别,因此可能不太容易理解。
-
@ivan_pozdeev - 感谢您对详细程度的反馈。基本示例来自docs.python.org/2/howto/argparse.html#conflicting-options。真的是在询问将 argparse 块放在函数中而不是“裸”。在我看来,我的示例更像 Pythonic,但我找不到任何其他人这样做的示例。因此我的问题。