Python运行其他Python文件时import与from import语句的区别是什么?
import <module>语句的作用与使用说明 首先需要纠正一个常见认知误区:
from <file> import <var/class/function>不会读取整个目标文件的说法是错误的。Python首次导入任意模块时,无论使用哪种导入语法,都会完整执行目标文件的所有顶层代码,将模块内的所有定义、变量加载到内存的模块对象中,两种导入语法的差异仅在于绑定到当前文件命名空间的内容不同。
import <file>的实际作用
这里的<file>为目标Python文件的模块名,不需要加.py后缀,语句的作用如下:
- 加载目标模块(首次导入时完整执行目标文件的顶层代码)
- 在当前文件的命名空间中创建一个和模块名同名的变量,指向加载完成的整个模块对象
- 你可以通过
模块名.对象名的格式,访问目标模块内所有顶层定义的变量、类、函数
具体使用示例
假设你有一个名为utils.py的目标文件,内容如下:
# utils.py 内容 VERSION = "1.0.0" def add(a, b): return a + b class Calculator: def minus(self, a, b): return a - b
在同目录的其他Python文件中可以这么使用:
# 导入整个utils模块 import utils # 访问模块内的变量 print(utils.VERSION) # 调用模块内的函数 print(utils.add(2, 3)) # 实例化模块内的类 calc = utils.Calculator() print(calc.minus(5, 1))
适用场景
- 你需要使用目标模块内的多个对象
- 目标模块内的对象名和当前文件已有的对象名存在命名冲突,使用
模块名.对象名的格式可以避免命名冲突,代码可读性也更高
内容的提问来源于stack exchange,提问作者gz200
相关产品推荐
相关产品推荐

