Python 导入的模块应该如何访问全局常量(VERBOSE=True)等。?
我很难理解在模块化代码中应该如何定义常量(使用main.py+2模块),在本例中是Python 导入的模块应该如何访问全局常量(VERBOSE=True)等。?,python,module,namespaces,python-import,Python,Module,Namespaces,Python Import,我很难理解在模块化代码中应该如何定义常量(使用main.py+2模块),在本例中是VERBOSE和SAMPLINGRATE常量 main.py 模块1.py 模块2.py 问题:常量VERBOSE和SAMPLINGRATE应该如何定义,以及在哪里定义? 注: 在创建Class1的实例时,我无法将所有这些常量作为参数传递,因为如果是这样,我将不得不在main.py中执行这项丑陋的操作: for i in range(100): ...Class1(i, verbose=VERBOSE,
VERBOSE
和SAMPLINGRATE
常量
main.py
模块1.py
模块2.py
问题:常量VERBOSE
和SAMPLINGRATE
应该如何定义,以及在哪里定义?
注:
- 在创建
的实例时,我无法将所有这些常量作为参数传递,因为如果是这样,我将不得不在Class1
中执行这项丑陋的操作:main.py
范围(100)内的i的for i in range(100): ...Class1(i, verbose=VERBOSE, samplingrate=SAMPLINGRATE, <lotsofconstantshere>))...
: …Class1(i,verbose=verbose,samplingrate=samplingrate,)。。。
- 我使用模块化设计,因为我希望
用于其他项目,而不是module1.py
。因此,如果我在另一个项目main.py
中导入projectB.py
,我希望module1.py
的默认值为VERBOSE
False
- python中没有真正的全局命名空间。您需要有一个每个人都导入的通用模块。如果公共模块具有很少的副作用(例如,导入另一个可能会创建循环依赖关系的模块),那么它是最好的
main.py
是一个特别差的容器,因为它是顶级脚本,根本不是模块。其他进口商将获得不同的main
模块
因此您可以创建config.py
VERBOSE = True
SAMPLINGRATE = 44100
你所有的模块都能做到
from config import *
这可能可行,但我希望能够从另一个没有
config.py
的项目导入module1.py
。如何做到这一点?i、 e.module1.py
包含自己的VERBOSE和SAMPLINGRATE默认值,如果有,可以被config.py覆盖?尝试使用环境变量来实现这些功能
for i in range(100):
...Class1(i, verbose=VERBOSE, samplingrate=SAMPLINGRATE, <lotsofconstantshere>))...
VERBOSE = True
SAMPLINGRATE = 44100
from config import *