请问一下, Python 在导入模块时候,具体执行了什么

2019-03-28 18:06:05 +08:00
 spotfg
例如:
第一次在导入 import re 这个模块时候,是直接将 re 模块内容都编译了一遍吗?
那么,如果模块中有全局变量的赋值运算,也是这时候执行吗?


所以就有了以下的疑问,假如程序以下列方式重载 a 文件,是重新编译一次及 a 文件的所有模块?
module_name = importlib.import_module('.', 'a')
module_name = importlib.reload(module_name)
result = module_name.main(params)
1389 次点击
所在节点    Python
1 条回复
spotfg
2019-03-29 09:42:03 +08:00
在其他论坛,有大佬这样说:
'''
import 语句所做的:
执行模块代码,接着生成一个 module 对象,里面包含了模块的变量、函数、类
'''

但是,importlib.reload(module_name)后 module 对象是被回收了,还是继续存在内存中

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/549637

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX