我使用.env
文件来存储路径,例如输入数据路径、输出数据路径等。我正在使用库dotenv
来检索这些路径和config.py
脚本,以使这些路径变为我的项目的正确形式。我将config.py
导入到我的其他模块中,因此我的所有路径对于包内的所有模块都是相同的,如果有任何更改,我只在.env
文件中进行一次更改。所有这些都工作正常,我在这里没有问题。
我的问题是这样的:在一个模块中,我通常有几个函数。一个典型的项目包括定义像main(), run(), formatfunc(), domathfunc(), movecomplexstuffoutofthewayfunc(), exportfunc()
这样的东西,等等。
- A)在main中定义一个路径变量,然后将其传递给所有变量函数,或
- B)检索每个函数的路径变量,而不是麻烦传递它?
)
import config
def main():
paths = config.getpaths(#returns dict of paths)
datapath = paths['DATA']
outpath = paths['EXPORTS']
y = 'foo'
x = domathfunc(y, datapath)
formatted = formatfunc(x, y, outpath)
return formatted
def domathfunc(y, datapath)
z = getdatafrom(datapath)
results = mathematics(y, z)
return results
def formatfunc(x, y, outpath)
pretty = prettify(x, y)
saveit(pretty, outpath)
return pretty
或B)
import config
def main():
y = 'foo'
x = domathfunc(y)
formatted = formatfunc(x, y)
return formatted
def domathfunc(y)
paths = config.getpaths(#returns dict of paths)
datapath = paths['DATA']
z = getdatafrom(datapath)
results = mathematics(y, z)
return results
def formatfunc(x, y)
paths = config.getpaths(#returns dict of paths)
outpath = paths['EXPORTS']
pretty = prettify(x, y)
saveit(pretty, outpath)
return pretty
在实际工作中,有很多函数,我想在项目开始时决定,我是每次传递path变量的参数,还是每次检索它?是否必须改变每个函数的可能性,是否应该在检索系统中改变一些东西变得比减少参数的数量来减少混乱更重要?
可以使用test
函数,main
应该是代码中最脏的地方。
这里的dirty是指在特定范围内应用算法和使用函数。
因此A
更好,因为您可以在不运行main
的情况下为每个函数编写测试。