我正在尝试使用 click
python 包将命令行参数传递给函数。官方文档中的示例按说明工作。但是文档中没有任何地方提到如何返回值。文档中的函数都没有返回值,所以我不明白该怎么做。
文档中的示例:
import click
@click.command()
@click.option('--count', default=3, help='Number of greetings.')
def hello(count):
"""Simple program that greets NAME for a total of COUNT times."""
for x in range(count):
click.echo('Hello')
if __name__ == '__main__':
hello()
我想做的事情:
import click
@click.command()
@click.option('--count', default=3, help='Number of greetings.')
def hello(count):
"""Simple program that greets NAME for a total of COUNT times."""
for x in range(count):
click.echo('Hello')
return "hello hi"
if __name__ == '__main__':
print(hello())
“hello hi”没有作为输出返回到控制台。谁能告诉我如何实现这一点?
最佳答案
不幸的是,您尝试做的事情没有意义。命令行程序可以有一个退出代码,但那只是一个小整数;它们不能返回文本或任意 Python 对象。
这些整数的含义有一个准标准;简单版本是 0 表示成功,1 表示大多数错误,2 表示无效的命令行参数。 click
试图让你的函数成为一个好的命令行公民,所以当你退出你的函数时,它会调用 sys.exit
并使用适当的数字(如果你 return
,如果您 raise
返回 1,如果未能解析您的参数则返回 2)。
因此,无论您返回
什么都没有效果,无论您尝试在顶层使用返回值做什么,都不会运行。
程序在需要“返回”文本时通常会做的是将其打印到标准输出,这正是 click.echo
的用途。
关于python - 当使用@click.option 将命令行参数传递给函数时,如何返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26246824/