关于在 python 个模块中从 .env 存储和检索路径的最佳实践
Best practices regarding paths stored and retrieved from .env in python modules
我正在使用 .env
文件来存储路径,例如输入数据路径、输出数据路径等。我正在使用库 dotenv
来检索这些路径和 config.py
脚本将这些路径转换为我的项目的正确形式。我将 config.py
导入我的其他模块,因此我的所有路径对于包中的所有模块都是相同的,如果有任何更改,我只在 .env
文件中进行一次更改。所有这些都正常工作,我这里没有问题。
我的问题是这样的:在一个模块中,我通常有几个函数。一个典型的项目涉及定义诸如 main(), run(), formatfunc(), domathfunc(), movecomplexstuffoutofthewayfunc(), exportfunc()
等
是不是更好
- A) 在 main 中定义一次路径变量,然后将其传递给所有
功能,或
- B) 在每个函数中检索路径变量,而不用四处传递它?
A)
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
在实际工作中,函数比较多,我想在项目开始的时候就决定,是每次给路径变量传参,还是每次取回?如果检索系统中的某些更改变得比减少参数数量以减少混乱更重要,那么必须更改每个功能的可能性是否有可能?
如果你能test
函数就更好了,main
应该是你代码中最脏的地方。
脏是指它在特定范围内应用算法并使用函数。
因此 A
更好,因为您可以在没有 运行 main
.
的情况下为每个函数编写测试
我正在使用 .env
文件来存储路径,例如输入数据路径、输出数据路径等。我正在使用库 dotenv
来检索这些路径和 config.py
脚本将这些路径转换为我的项目的正确形式。我将 config.py
导入我的其他模块,因此我的所有路径对于包中的所有模块都是相同的,如果有任何更改,我只在 .env
文件中进行一次更改。所有这些都正常工作,我这里没有问题。
我的问题是这样的:在一个模块中,我通常有几个函数。一个典型的项目涉及定义诸如 main(), run(), formatfunc(), domathfunc(), movecomplexstuffoutofthewayfunc(), exportfunc()
等
是不是更好
- A) 在 main 中定义一次路径变量,然后将其传递给所有 功能,或
- B) 在每个函数中检索路径变量,而不用四处传递它?
A)
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
在实际工作中,函数比较多,我想在项目开始的时候就决定,是每次给路径变量传参,还是每次取回?如果检索系统中的某些更改变得比减少参数数量以减少混乱更重要,那么必须更改每个功能的可能性是否有可能?
如果你能test
函数就更好了,main
应该是你代码中最脏的地方。
脏是指它在特定范围内应用算法并使用函数。
因此 A
更好,因为您可以在没有 运行 main
.