我正在写一个python包。我正在使用插件的概念 - 其中每个插件都是Worker类的特化。每个插件都是作为模块(脚本?)编写的,并在单独的进程中生成。
由于插件之间的基本共性(例如,所有扩展基类'Worker'),插件模块通常如下所示:
import commonfuncs
def do_work(data):
# do customised work for the plugin
print 'child1 does work with %s' % data
在C / C ++中,我们提供了防护措施,可以防止标题被多次包含。
我是否需要Python中的类似内容,如果是,我怎样才能确保commonfuncs不会被“包含”多次?
答案 0 :(得分:16)
不用担心:在程序执行过程中,只有模块的第一个 import
才会导致它被加载。在第一个之后的每个进一步导入只是从“缓存”字典(sys.modules
中获取模块对象,由模块名称字符串索引),因此它们非常快和没有副作用。因此,没有必要保护。