以这种方式获取命令行参数是否有内在的错误?我的意思是把参数解析放到它自己的函数中。它会被认为是非Pythonic或更多?作为函数的Python argparse
#!/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)
不,这很好。 – 2014-11-06 17:45:27
您可以使用单个选项来详细说明,但由于您有3个级别,因此可能不会更容易理解。 – 2014-11-06 18:01:34
@ivan_pozdeev - 感谢您对冗长的反馈。基本示例来自https://docs.python.org/2/howto/argparse.html#conflicting-options。真的在询问将argparse块放入函数中,而不是“裸”。在我看来,我的例子是Pythonic更多,但我找不到任何其他人的例子。因此我的问题。 – JonB 2014-11-06 18:21:19