由于我没有丰富的Python经验,我总是试图遵循Google Python Style Guide。该指南包含以下句子。
"即使是用作脚本的文件也应该是可导入的,仅仅导入不应该具有执行脚本主要功能的副作用。"
因此,我搜索了一种覆盖__getattr__
的方法,并且一直使用this ArrtDict class进行参数解析,如下所示。
import argparse
class AttrDict(dict):
def __init__(self, *args, **kwargs):
super(AttrDict, self).__init__(*args, **kwargs)
self.__dict__ = self
def parse_args(args):
if isinstance(args, list):
parser = argparse.ArgumentParser()
parser.add_argument('--args1')
return parser.parse_args(args)
else:
return AttrDict(args)
def main(args):
args = parse_args(args)
if __name__ == '__main__':
import sys
main(sys.argv[1:])
在Python中进行参数解析的最佳实践是什么?
答案 0 :(得分:1)
你所指的句子是你应该在你的脚本文件中包含这一行:
if __name__ == '__main__':
并且运行该脚本的任何代码都应该出现在该块中。通过这样做,您可以确保在从其他文件导入代码时,代码不会自动运行,因为导入会忽略上面提到的if语句。
对于处理参数(应该存在于上面提到的if块中,因为在导入时你不想这样做),你应该在Python 2.7之后使用argparse。这是文档的链接:
您不必覆盖__getattr__