Python 的“导入”内部是如何工作的?

2024-04-15

当您导入一个模块,然后再次重新导入它时,它会被重新导入/覆盖还是跳过? 当您导入模块“a”和“b”,并且还在模块“a”中导入模块“b”时,会发生什么?这样做安全吗?例如,如果该模块“b”中有一个实例化的类,您最终会实例化它两次吗?


import加载匹配的.py, .pyc or .pyo文件,创建一个模块对象,并将其及其完全限定(“点分”)名称存储在sys.modules字典。如果一秒钟import在此字典中找到要导入的模块,它将返回它,而无需再次加载文件。

回答您的问题:

当您导入一个模块,然后再次重新导入它时,它会被重新导入/覆盖还是跳过?

它将被跳过。要明确地重新导入模块,请使用reload()内置功能。

当您导入模块“a”和“b”,并且还在模块“a”中导入模块“b”时,会发生什么?

import a将加载a from a.py[c], import b将返回模块sys.modules['b']已经加载了a.

这样做安全吗?

是的,一点没错。

例如,如果该模块“b”中有一个实例化的类,您最终会实例化它两次吗?

Nope.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 的“导入”内部是如何工作的? 的相关文章

  • Python OpenCV:检测大体运动方向?

    我仍在编写一个书籍扫描脚本 现在 我所需要的只是能够自动检测翻页 这本书占据了 90 的屏幕 我使用一个粗糙的网络摄像头进行运动检测 所以当我翻页时 运动方向基本上是同一个方向 我修改了一个运动跟踪脚本 但导数却无济于事 usr bin e
  • 在 Idle shell 中导入模块

    我正在尝试学习 python 但在导入模块时遇到问题 我有一个 pyc 文件 我正在尝试将其导入到名为 dfa pyc 的空闲 shell 中 我将该文件放在名为 xyz 的文件夹中 我使用以下命令导航到该文件夹 os chdir User
  • 如何将 Pandas DataFrame 中加载的嵌入转换为 Gensim 模型?

    我有一个 DataFrame 其中索引是单词 并且有 100 个带有浮点数的列 这样对于每个单词 我将其嵌入为 100d 向量 我想将我的 DataFrame 对象转换为gensim 模型对象 https radimrehurek com
  • Excel 工作表到 Numpy 数组

    我正在尝试做一件令人难以置信的简单事情 将 Excel 工作表的部分内容加载到 Numpy 数组中 我发现了一个有用的拼凑 但它令人尴尬地不Pythonic 假设我的工作表被加载为 ws 代码 A np zeros 37 3 for i i
  • 二维高斯函数不能产生正确的结果

    我想写一个返回一个的函数np array尺寸的nx x ny包含具有均值的中心高斯分布mu and sd sig 下面的代码在某些情况下有效 但在许多情况下无效 有什么问题或者我还应该写什么来获得我需要的东西 import matplotl
  • 类型错误:fit_transform() 需要 2 个位置参数,但给出了 3 个

    我有熊猫数据框df 我想对连续和分类特征进行编码df使用不同的编码器 我觉得用起来很舒服make column transformer 但是下面显示的代码失败了LabelEncoder 但可以很好地与OneHotEncoder handle
  • Anaconda-Python RequestsDependencyWarning:urllib3 (1.22) 或 chardet (2.3.0) 与支持的版本不匹配

    我收到一条警告 该警告似乎没有在任何其他在线资源中涵盖 我安装了 Anaconda Python 3 6 创建新的 Conda 环境时收到的警告是 RequestsDependencyWarning urllib3 1 22 or char
  • 将多嵌套 dict/json 加载到 pandas 中

    我正在尝试加载一个非常令人困惑的多重嵌套JSON变成熊猫 我已经在使用了json 规范化 http pandas pydata org pandas docs stable reference api pandas io json json
  • (不再寻求答案)消息框内的Python输入框

    有什么方法可以在使用 ctypes 库打开的消息框内输入框吗 到目前为止我有 import ctypes messageBox ctypes windll user32 MessageBoxA title Title text Messag
  • 如何将Python列表分成不等长的子列表?

    我试图将用逗号分隔的元素列表划分为长度不等的块 我该如何划分它 list1 1 2 1 list2 1 1 1 1 1 1 1 2 1 1 1 3 1 1 1 4 list1 包含的元素是我希望将 list2 分成的块的大小 你可以结合以下
  • virtualenv、python 和 subversion

    我正在尝试在 python subversion SWIG 库中使用virtualenv no site packages环境 我怎样才能做到这一点 你可以从 svn 将其安装在 virtualenv 中 source home you v
  • 在 docker 中使用 selenium 运行 django 测试

    为了执行测试 我通常运行一个单独的容器 docker compose run rm web bin bash 其中web是django的容器 我不时从 shell 执行 py test 为了能够使用 django 从容器访问 seleniu
  • GridSearchCV:每次函数完成循环时打印一些表达式

    假设你有一些功能function在Python中通过循环工作 例如 它可以是一个计算某个数学表达式的函数 例如x 2 对于数组中的所有元素 例如 1 2 100 显然这是一个玩具示例 是否可以编写这样的代码 每次function经过一个循环
  • 定制 odoo 中的会计和财务模块?

    我正在研究会计和财务模块 我想做一些修改 例如隐藏字段和隐藏税收图表 有人能帮我吗 请告诉我隐藏左侧菜单项 税表 的程序 我也想知道view id隐藏发票表中的税费和底部税费 更新 请让我知道隐藏它们的外部 ID 我无法找到它们 因为它们链
  • 在 python 中对自定义类执行集合操作

    我想将 Python 的内置 set 类与我创建的自定义类一起使用 如果我愿意 要创建包含自定义类实例的集合 我需要实现哪些函数才能执行测试 例如 set a set b 它可以开箱即用 但是 在某些情况下 过载是有意义的 eq https
  • Django 查询集权限

    我正在构建一个相当复杂的Django在电子邮件扫描服务之上使用的应用程序 这Django应用程序是使用 Python 3 5 编写的 该应用程序主要使用Django Rest Framework处理与浏览器前端的通信 我目前遇到的问题是我尝
  • Pandas - 使用其他列值作为列名选择列

    我有一个包含一列的数据框 我们称之为 名称 names 具有其他列的名称 我想添加一个新列 该列的每一行都有基于 名称 列中包含的列名称的值 Example 输入数据框 pd DataFrame from dict a 1 2 3 4 b
  • 找不到满足 pkg-resources==0.0.0 要求的版本

    我的应用程序部署在heroku 当我通过推送我的代码时git push heroku master 它给了我这个错误 Collecting pkg resources 0 0 0 from r requirements txt line 1
  • ImageDataGenerator 预测类 - 为什么预测未正确从概率转换为预测类?

    我有一个这样设置的目录 images val class1 class2 test all classes train class1 class2 每个目录中都有一组图像 我想预测测试中的每个图像是否属于 1 类或 2 类 我写这个是为了读
  • DateField 未呈现为 type="date"

    class Form Form plan start DateField Plan Start validators Required 这段代码将渲染这个 html

随机推荐

  • Firebase cli 抛出错误:服务器错误。在每个命令上连接 ETIMEDOUT

    我在堆栈溢出上检查了这个问题的所有答案 但所有这些都是由于其他原因而发生的 出色地 我试图部署一些数据库规则并开始收到此错误 后来 当我尝试做任何事情时 我意识到所有 firebase 命令都不起作用 并且一次又一次地抛出相同的错误 我尝试
  • 属性“sonar.jacoco.reportPath”已弃用。请改用“sonar.jacoco.reportPaths”

    属性 sonar jacoco reportPath 已弃用 请用 改为 sonar jacoco reportPaths 通过 Gradle 运行 SonarQube 时 我不断收到此消息 并且短语 reportPath 在整个多模块项目
  • git-http-backend 返回错误 502

    我在我的服务器上运行 gitweb 和 gitolite http git jshawl com http git jshawl com 我在设置时遇到问题git http backend允许匿名克隆 这是我的虚拟主机文件 etc apac
  • 使用 jquery 捕获给定元素的所有事件(单击、更改、鼠标悬停等)

    无论如何 我可以检查现有元素是否附加了事件处理程序吗 假设一个简单的javascript方法向某个div example 无jquery 添加了一个点击事件 因此没有属性标签 那么是否可以使用jquery捕获附加的事件 我尝试使用下面的代码
  • 从 Teradata 12 升级到 Teradata 13 后出错....terasso.dll

    我们目前正在将 Teradata 客户端从 v12 升级到 v13 为此 从系统中卸载了旧版 Teradata 12 并安装了 TTU13 安装后 当我尝试使用新的 Teradata 驱动程序添加 ODBC 连接时 出现以下错误 teras
  • 如何检查iOS版本 delphi xe5/xe6

    有没有办法在 Delphi 应用程序中检查 iOS 版本 我想在 Delphi XE6 中为 iOS7 和 iOS6 创建特定的代码段 您可以使用服务版本 http docwiki embarcadero com Libraries XE6
  • React Router 的 组件中的状态是什么?

    这是他们的文档的屏幕截图 成分 https i stack imgur com qt5zs png What state他们是什么意思 ARedux state 通过一个州是什么样子的 像这样 pathname foo query x th
  • 导入 matplotlib 时 numpy 的版本错误

    When I import matplotlib 我没有收到任何错误 但是当我 import matplotlib pyplot I get RuntimeError module compiled against API version
  • 尝试将我的 LogCat 输出到文件

    有人告诉我这是一个命令行选项 但是 Eclipse 的 Run Run Configurations Target Additional Emulator Command Line Options 字段已经被占用 sdcard C andr
  • 使用 Rstudio Keras 的暹罗网络

    我正在尝试使用 Rstudio Keras 包实现暹罗网络 我尝试实现的网络与您可以在中看到的网络相同这个帖子 https sorenbouma github io blog oneshot 因此 基本上 我将代码移植到 R 并使用 Rst
  • 如何知道webkitSpeechRecognition是否启动?

    我正在制作一个机器人来听我的声音 所以我做了 this recognition new webkitSpeechRecognition 我可以这样做来开始听 this recognition start 这是停止听 this recogni
  • Java:为什么这个交换方法不起作用? [复制]

    这个问题在这里已经有答案了 我有以下代码 public class Main static void swap Integer x Integer y Integer t x x y y t public static void main
  • 使用多个字段对 solr 搜索结果进行排序 (solrj)

    我需要根据两个因素对从 apache solr 返回的结果进行排序 我们的系统中有三个实体由 solr 索引 组 项目和数据集 在结果中我希望首先显示数据集 然后是项目 然后是组 但我仍然希望它尊重每种类型的评分值 因此 例如 结果将是 得
  • mysql 查找多列重复项

    如何查找多列的重复记录 表有主键 自动递增 EG ID a id b id 1 34 23 2 34 23 3 35 25 例如我想查找具有相同a id和b id的记录 Thanks select t ID t a id t b id fr
  • 如何找到激活时打开给定 HMENU 的菜单项(如果有)?

    我想用原型实现一个功能 Locates the menu item of the application which caused the given menu mnu to show up return true if the given
  • 如何将事件处理程序分配给 JavaScript 中的多个元素?

    我知道如何使用 jQuery 来做到这一点 并且我知道如何使用事件委托来做到这一点 但是如何在纯 JavaScript 中做到这一点呢 例如 如何将事件处理程序分配给一堆lis 我看到var li document querySelecto
  • 代码高尔夫:弗罗贝尼乌斯数

    Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 编写最短的程序来计算给定正数集的弗罗贝尼乌斯数 弗罗贝尼乌斯数是不能写成集合中数字的正倍数之和
  • CKEditor 5 通过外部 url 插入图像

    我想知道如何仅通过 URL 插入图像 用户从其他网站获取它 我需要实现一个简单的img 源 在 CKEditor 5 中 问题是 默认情况下 编辑器要求我上传图像 而我需要插入外部 url 我读过很多相关主题 1 https stackov
  • 带正文的 HttpDelete

    我正在尝试使用 HttpDelete 对象来调用 Web 服务的删除方法 Web 服务的代码从消息正文中解析 JSON 但是 我无法理解如何将主体添加到 HttpDelete 对象 有没有办法做到这一点 使用 HttpPut 和 HttpP
  • Python 的“导入”内部是如何工作的?

    当您导入一个模块 然后再次重新导入它时 它会被重新导入 覆盖还是跳过 当您导入模块 a 和 b 并且还在模块 a 中导入模块 b 时 会发生什么 这样做安全吗 例如 如果该模块 b 中有一个实例化的类 您最终会实例化它两次吗 import加