一个包中的几个模块导入一个公共模块

mor*_*ous 6 python

我正在写一个python包.我正在使用插件的概念 - 其中每个插件都是Worker类的特化.每个插件都是作为一个模块(脚本?)编写的,并在一个单独的进程中生成.

由于插件之间的基本共性(例如,所有扩展基类'Worker'),插件模块通常如下所示:

import commonfuncs

def do_work(data):
    # do customised work for the plugin
    print 'child1 does work with %s' % data
Run Code Online (Sandbox Code Playgroud)

在C/C++中,我们包含了防护,它可以防止标题被多次包含.

我是否需要Python中的类似内容,如果是,我怎样才能确保commonfuncs不会被"包含"多次?

Ale*_*lli 16

不用担心:只有程序执行过程中的 import一个模块才能加载它.在第一个之后的每个进一步导入只是从"缓存"字典中获取模块对象(sys.modules由模块名称字符串索引),因此它既快速没有副作用.因此,不需要警卫.

  • +1:“不需要防护装置”也许可以说“防护装置是内置的”。 (2认同)