gpt4 book ai didi

python - 传递已解析的参数并不有趣

转载 作者:太空宇宙 更新时间:2023-11-04 10:12:33 24 4
gpt4 key购买 nike

我使用 arparse在 Python 中解析来自命令行的参数:

def main():
parser = argparse.ArgumentParser(usage=usage)
parser.add_argument('-v', '--verbose', dest='verbose', action='store_true')
parser.add_argument(...)
args = parser.parse_args()

我只在代码的少数地方使用对象 args

一共有三个方法,调用栈是这样的

def first_level(args):
second_level()

def second_level():
third_level()

def third_level():
### here I want to add some logging if args.verbose is True

我想向 third_level() 添加一些日志记录。

我不想更改方法 second_level() 的签名。

如何使 arg 对象在 third_level() 中可用?

我可以将 arg 存储为全局变量,但几年前在开发人员培训中被告知不要使用全局变量....

处理此问题的常用方法是什么?

最佳答案

将我的评论转换为答案。我建议您根本不要在 third_level(..) 中设置条件。有一些机制可以让日志记录模块处理这个问题——并且可以从这 3 个函数之外控制这些机制。

类似于:

def first_level(args):
second_level()

def second_level():
third_level()

def third_level():
logging.info("log line which will be printed if logging is at INFO level")


def main():
args = ....
#Set the logging level, conditionally
if args.verbose:
logging.basicConfig(filename='myapp.log', level=logging.INFO)
else:
logging.basicConfig(filename='myapp.log', level=logging.WARNING)

first_level(args)

关于python - 传递已解析的参数并不有趣,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37476417/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com