在python中共享和扩展枚举列表?

时间:2013-11-22 03:56:33

标签: python module

假设您有一个通用模块和

it defines KEY_1, KEY_2. 

您有其他模块使用公共模块并以

的方式扩展它
module_a defines KEY_A1 KEY_A2
module_b defines KEY_B1 KEY_B2

我想在某处构建所有键的列表:

[KEY_1, KEY_2, KEY_A1, KEY_A2, KEY_B1, KEY_B2]  

并从任何地方访问该列表。

我可以从公共模块中定义全局可访问列表开始 但是如何从其他模块插入值?

- module_a.py -

import common_module

KEY_A1 = 10
KEY_A2 = 11

common_module.the_list.append(KEY_A1)
common_module.the_list.append(KEY_A2)

defs..
classes..

如果从其他代码多次导入module_a.py,那么KEY_A1会不会多次附加?

1 个答案:

答案 0 :(得分:1)

不,模块中的代码仅在第一次导入模块时执行一次。这就是sys.modules字典的目的:它记录了已经导入的模块。每次导入都会先检查sys.modules。如果要导入的模块的名称已经是该dict中的键,则只需从该dict中检索模块对象。否则(导入的模块的名称不在该dict中)模块的文件执行以创建模块对象,并更新sys.modules以记录新模块名称 - >模块对象对。