我不熟悉argh
,但显然它是一个包装器argparse
。我的猜测是它正在占用你的功能__doc__
,并使其成为description
解析器的,例如
parser = argparse.ArgumentParser(description=func.__doc__)
https://docs.python.org/2.7/library/argparse.html#argparse.RawDescriptionHelpFormatter https://docs.python.org/2.7/library/argparse.html#argparse.RawDescriptionHelpFormatter
argparse
has a RawDescriptionHelpFormatter
按原样显示描述。
parser = argparse.ArgumentParser(description=func.__doc__,
formatter_class=argparse.RawDescriptionHelpFormatter)
那么问题来了,有没有办法得到argh
使用这个格式化程序?
This argparse
脚本生成您想要的帮助:
import argparse
def func(foo=1, bar=True):
"""Sample function.
Parameters:
foo: float
An example argument.
bar: bool
Another argument.
"""
print foo, bar
parser = argparse.ArgumentParser(prog='script.py',
description=func.__doc__,
formatter_class=argparse.RawDescriptionHelpFormatter)
parser.add_argument('-f', '--foo', type=float)
parser.add_argument('-b', '--bar', action='store_false')
parser.print_help()
In argh/dispatching.py
def dispatch_command(function, *args, **kwargs):
...
parser = argparse.ArgumentParser(formatter_class=PARSER_FORMATTER)
set_default_command(parser, function)
dispatch(parser, *args, **kwargs)
所以你可以设置:
PARSER_FORMATTER = argparse.RawDescriptionHelpFormatter
或者编写您自己的函数:
def raw_dispatch_command(function, *args, **kwargs):
...
parser = argparse.ArgumentParser(formatter_class=argparse.RawDescriptionHelpFormatter)
set_default_command(parser, function)
dispatch(parser, *args, **kwargs)