我从几个工具中知道 --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
语句中定义一个函数,并且只有在条件为真时才会被定义!
如果您使用的是 Python 3,其中 print
已经是一个函数(或者如果您愿意使用 print
作为 2.x 中的一个函数,则使用 from __future__ import print_function
) 更简单:
verboseprint = print if verbose else lambda *a, **k: None
这样,如果详细模式关闭(使用 lambda),函数被定义为无操作,而不是不断测试 verbose
标志。
如果用户可以在您的程序运行期间更改详细模式,这将是错误的方法(您需要在函数中使用 if
),但由于您使用命令行标志设置它,您只需要做出一次决定。
然后你使用例如verboseprint("看看我所有的冗长!", object(), 3)
每当您想打印“详细”消息时。
关于python - 如何在脚本中实现 --verbose 或 -v 选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5980042/