python - 一个包中的多个模块导入一个公共(public)模块

标签 python

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

由于插件之间的基本通用性(例如,都扩展了基类“Worker”),插件模块通常如下所示:

import commonfuncs

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

在 C/C++ 中,我们有 include guards,它可以防止 header 被多次包含。

我是否需要在 Python 中使用类似的东西?如果需要,我如何确保 commonfuncs 不会被多次“包含”?

最佳答案

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

关于python - 一个包中的多个模块导入一个公共(public)模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2950557/

相关文章:

python - 使用用户在 Python 中插入的文件运行 Linux shell 脚本

python - 插入行 python gdata.spreadsheets.client

javascript - CSRF 验证失败

python - 如何扩展 h5py 以便我可以访问 hdf5 文件中的数据?

python - 无法登录到 Django/admin 界面

python - Django-Pinax : How do you use a pinax app apart from what you get with a pinax base project?

python scrapy - 从 <table> 中提取数据 - 没有 id 标签

python - 有没有纯 Python、BSD 风格的开源 SVG 库?

python - 在 map 上放置更多的 folium/leaflet 元素

python - 需要在 python 脚本中运行 docker run 命令