可以通过调用中的和对,或通过调用(在使用子解析器时,后者最有用), 直接
将具有所需行为的函数或对象告诉ArgumentParser对象。如果这样做,则可以在从解析返回的对象上查找函数,而不必说在全局名称空间中查找。
action='store_const'``const=<stuff>``add_argument()``set_defaults()``parsed_args
作为一个小例子:
import argparsedef foo(parsed_args): print "woop is {0!r}".format(getattr(parsed_args, 'woop'))def bar(parsed_args): print "moop is {0!r}".format(getattr(parsed_args, 'moop'))parser = argparse.ArgumentParser()parser.add_argument('--foo', dest='action', action='store_const', const=foo)parser.add_argument('--bar', dest='action', action='store_const', const=bar)parser.add_argument('--woop')parser.add_argument('--moop')parsed_args = parser.parse_args()if parsed_args.action is None: parser.parse_args(['-h'])parsed_args.action(parsed_args)然后您可以这样称呼它:
% python /tmp/junk.py --foo woop is None% python /tmp/junk.py --foo --woop 8 --moop 17 woop is '8'% python /tmp/junk.py --bar --woop 8 --moop 17 moop is '17'



