Python 导入的模块应该如何访问全局常量(VERBOSE=True)等。?

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,

我很难理解在模块化代码中应该如何定义常量(使用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, samplingrate=SAMPLINGRATE, <lotsofconstantshere>))...
    
    范围(100)内的i的
    :
    …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 *