5

这不是关于如何使用argparse,而是关于如何在程序中使用已解析的选项。

检查函数选项中的选项/使用值的好技术是什么?

一些想法:

  • 使用全局变量(模块变量)
  • 向要在其中使用值的函数添加参数并将其传递(可能不止一个函数级别)
  • if每次取决于选项(使用全局变量?)时,使用 - 子句进行检查
  • 为某些检查定义特殊功能

我必须监督一些技术,这对于有很多选项的大型程序来说似乎是不可行的,尤其是当程序的不同部分有多个文件时。

4

1 回答 1

4

在我看来,参数解析应该是在应用程序的入口点执行的东西。库/模块逻辑应该保持不可知,并使用参数进行初始化。

也就是说,如果您的可运行应用程序需要输入文件的路径,您的main()入口点可以使用argparse接受--infile. 但是库函数readfile应该不知道 argparse,并且要么是infile作为成员属性接收的类的一部分,要么应该直接将其作为参数接收。

class Reader(object):
    def __init__(self, infile):
        self.infile = infile

    def readfile(self):
        # read(self.infile)

或者...

def readfile(infile):
    # read(infile)

另一种方法是,如果您使用配置文件,并且有一个配置解析器模块。这可以被读入和解析,然后对需要全局应用程序配置选项的任何模块仍然可用。这种方法的一个例子是django 如何拥有它的settings模块。django 项目中的任何应用程序都可以导入和查询设置。

于 2012-12-10T21:44:50.940 回答