我知道几种工具中的--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/

10-10 13:32