Python 附加到系统参数 - 不好的做法?

Python append to system arguments - bad practice?

我正在使用 sys.argv 解析我的 Python 项目中的系统参数。在某些时候,我不得不在编写了解析系统参数的逻辑后修改脚本。我添加了一行,基本上将一个字符串附加到 sys.argv 所以解析它的逻辑不会改变 -

sys.argv.append('some string here')

在为程序创建系统参数后修改系统参数是一种不好的做法吗?

在 Python 中修改 sys.argv 是不好的做法,这在其他语言中是等效的。

在这些情况下,我建议使用 parsed_args 变量,其中包含来自 sys.argv 的所有已解析数据、您要设置的任何默认值以及 "middleware" 会进行的任何修改使.

在我看来,在这种情况下,最好先使用 argparse 解析这些参数。

这样你可以获得 Namespace 对象,可以修改并且比硬编码更容易维护 sys.argv

之后你可以随意修改Namespace

小例子:

def parse_args():
    parser = argparse.ArgumentParser(description="Description")
    parser.add_argument('--file_path')
    parsed_args = parser.parse_args()
    return parsed_args

if __name__ == '__main__':
    args = parse_args()
    print(args.file_path) # the argument passed while running script
    args.another_value = "value"
    print(args.another_value) # value added within code
    setattr(args, 'yet_another', 'value') # another way to set attributes