通用全局文件

时间:2019-07-14 19:02:44

标签: python-3.x

我正在尝试定义可以从多个文件访问的全局变量。 我还面临一个挑战,即在定义全局变量时,我要使用动态名称。即

@Directive({
  selector : 'myDirective '
    })

  export class MyDirective {

  myName:string;

       constructor (){

       }
    }

所以我将全局定义为

name = 'PCOLL2_SCULPT_P1_X'
value = 12

然后我可以

 globals()[name] = value

来自定义文件,但是我似乎无法从另一个python文件访问

2 个答案:

答案 0 :(得分:1)

全局变量是按模块(* .py文件)定义的。从文档globals()

  

返回代表当前全局​​符号表的字典。这始终是当前模块的字典(在函数或方法中,这是定义它的模块,而不是从中调用它的模块)。

所以您不能像这样访问它们。

如果要为不同的模块提供相同形式的配置,则使用configparser应该是干净的解决方案。

答案 1 :(得分:0)

稍微修改一下代码即可。假设我们有:

a.py:

name = 'PCOLL2_SCULPT_P1_X'
value = 12

globals()[name] = value

if __name__ == "__main__":
    print(PCOLL2_SCULPT_P1_X)

还有b.py:

from a import *

print(PCOLL2_SCULPT_P1_X)

运行这2个文件中的任何一个都将打印12

b.py也可能是:

import a

print(a.PCOLL2_SCULPT_P1_X)

但是,这不是很好,如this answer中所述。您应该仔细检查用例并找到最佳方法。