在 Python 中,import 语句的使用看似简单,但其背后的机制涉及模块加载、路径搜索及内存管理。理解这些底层逻辑,有助于编写更高效、规范的代码。
模块与包的基本概念
模块(Module):从逻辑上组织代码(变量、函数、类)的单位,本质上是一个 .py 文件。物理文件名通常为 module_name.py,而逻辑名称为 module_name。
包(Package):由模块和子包组成的目录结构,用于构建更复杂的应用环境。一个有效的包必须包含 __init__.py 文件(即使为空),它标志着该目录是一个 Python 包。
常见的导入方式
- 导入整个模块
import module_name - 同时导入多个模块
import module_name1, module_name2 - 导入特定属性或方法
使用别名时,调用函数需使用from module_name import module_element [as new_name]new_name()。注意,当前文件中若已定义同名函数,可能会产生命名冲突。
import 的本质与路径搜索
当执行 import module_name 时,Python 会将 module_name.py 中的全部代码加载到内存,并创建一个名为 module_name 的变量指向该模块对象。
示例演示
假设目录下有两个文件:
module_name.py
# -*- coding: utf-8 -*-
print("This is module_name.py")
name = 'Hello'
def hello():
print("Hello")
module_test01.py
# -*- coding: utf-8 -*-
import module_name
print("This is module_test01.py")
print(type(module_name))
print(module_name)
运行结果会显示模块已被加载,且生成了对应的字节码缓存文件(如 __pycache__/module_name.cpython-35.pyc)。这证明了导入过程实质是执行了目标文件。


