python - 当 import math 被写入两次时,是否在第二个 import math 语句期间创建了引用?
问题描述
案例一:
import math
import math
案例2:
import math
from math import sqrt
什么时候import math
写了两次,在第二个import math
语句期间是否创建了引用?有人可以详细解释一下上述两种情况是如何发生的吗?
解决方案
导入的模块存储在sys.modules
. 如果另一个人再次需要它们,import
或者from ... import ...
它们被从那里带走。
在案例 1 中,第 2 行不执行任何操作。更准确地说:它获取存储的math
模块并math
在周围的命名空间中设置以再次引用模块。
在案例 2 中,第 2 行查找已经加载的math
,从中检索sqrt
并将其放置在周围的命名空间中。
更新:显示相同模块的第二次导入覆盖周围命名空间中的名称的示例(通常具有相同的引用,但可以更改):
import sys
import re
import math
print(math) # nothing unusual: <module 'math' ...
sys.modules["math"] = re
print(math) # nothing unusual yet: <module 'math' ...
import math
print(math) # What?: <module 're' ...
推荐阅读
- google-cloud-platform - 使用 cloudsqlproxy 从 GKE 集群连接到 Google 云 mysql 实例
- angular - 使用“dotnet run”命令运行时 Angular/NET Core Web API 未命中
- perl - USPS HTTP 发布请求
- ampl - 下标中的 AMPL 变量尚不允许
- ios - realmdb swift 不从文件中读取值
- c# - 读取 appsettings.json 文件 C# .NET Core 的问题
- javascript - 我无法使用以下 JavaScript 代码制作运行列表
- java - Uiautomator 使用 adb 绑定到坐标
- java - Android:错误:程序类型已存在:com.google.common.base.AbstractIterator$State
- java - 为什么两个日期之间的差异会返回额外的一天?