我知道几种工具中的--verbose
或-v
,我想在自己的一些脚本和工具中实现它。
我想到了放置:
if verbose:
print ...
通过我的源代码,以便如果用户通过
-v
选项,则将verbose
变量设置为True
并打印文本。这是正确的方法还是有更常见的方法?
另外:我不是在要求一种实现参数解析的方法。我知道怎么做。我只对详细选项特别感兴趣。
最佳答案
我的建议是使用一个函数。但是不要像可能会尝试将if
放入函数中那样,而是这样做:
if verbose:
def verboseprint(*args):
# Print each argument separately so caller doesn't need to
# stuff everything to be printed into a single string
for arg in args:
print arg,
print
else:
verboseprint = lambda *a: None # do-nothing function
(是的,您可以在
if
语句中定义一个函数,并且只有在条件为true时才会被定义!)如果您使用的是Python 3,则
print
已经是一个函数(或者如果您愿意使用print
在2.x中使用from __future__ import print_function
作为函数),它甚至更加简单:verboseprint = print if verbose else lambda *a, **k: None
这样,如果关闭了详细模式(使用lambda),则该函数被定义为“不执行任何操作”,而不是不断测试
verbose
标志。如果用户可以在程序运行期间更改详细模式,则这将是错误的方法(您需要在函数中使用
if
),但是由于您是使用命令行标志设置的,因此您只需要一次做出决定。然后,您可以使用想要打印“详细”消息时的
verboseprint("look at all my verbosity!", object(), 3)
。关于python - 如何在脚本中实现--verbose或-v选项?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5980042/