我正在尝试定义可以从多个文件访问的全局变量。 我还面临一个挑战,即在定义全局变量时,我要使用动态名称。即
@Directive({
selector : 'myDirective '
})
export class MyDirective {
myName:string;
constructor (){
}
}
所以我将全局定义为
name = 'PCOLL2_SCULPT_P1_X'
value = 12
然后我可以
globals()[name] = value
来自定义文件,但是我似乎无法从另一个python文件访问
答案 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中所述。您应该仔细检查用例并找到最佳方法。