Python 中 import 和 from...import 有什么区别及用法详解

江岸
江岸
发布时间:2026-10-11| 3人浏览过
原创

本文深入解析了 Python 语言中两类核心的模块引入语法。通过梳理 import 与 from...import 的底层调用逻辑,揭示了全局命名空间与局部变量引用的实质区别。结合标准库调用示例,明确了不同写法对代码整洁度与可维护性的影响,并提供工业级开发的规范指引。

认识 Python 的模块引入机制

Python 借助模块(Module)实现功能的模块化组织,本质上是一个包含多个函数与类定义的 .py 文件。在编写主程序时,若需调用外部编写的逻辑,必须先执行引入操作。这与其他语言中的 #include 或 require 异曲同工,但在具体语法执行效果上主要分为两种模式。

两种引入方式的核心差异

两者的本质区别在于「命名空间的管理策略」。为了方便对照,我们假设存在一个名为 support.py 的外部模块,其内部定义了一个基础方法:

def print_func(par):
    print("Hello :", par)

第一步:使用 import 完整引入模块

import 指令会将指定模块作为一个独立对象载入当前程序的顶层命名空间。这种做法类似于将整个文件夹挂载到当前目录,所有资源都必须通过 模块名.成员名 的全限定路径进行访问。

# 载入模块对象
import support

# 调用时必须携带前缀标识
support.print_func("Runoob")

执行上述流程后,解释器会严格锁定来源为 support 对象下的 print_func。这种写法的最大优势是天然具备物理隔离属性,即便当前脚本自身也存在同名函数,也不会产生覆盖风险。

第二步:使用 from...import 定向提取

from...import 允许直接将模块内的特定元素“剥离”并放置到当前的局部环境中。搭配通配符 * 使用时,表示将该模块内所有的公开成员批量注入当前作用域。这种方式类似于直接把需要的实体文件复制到了眼前,使用时省略了前缀校验。

# 将 support 中的所有公开属性提取到当前层级
from support import *

# 直接调用,无需前缀
print_func("Runoob")

由于 print_func 已经被直接映射至当前文件的顶部作用域,调用变得极为简洁。但代价是增加了潜在的碰撞概率,一旦当前文件中已有同名变量,原有的定义将被静默覆盖。

工程实践中的规范建议

尽管 from...import * 在极短的脚本编写或交互式调试中能节省敲击次数,但在企业级开发与大型协作项目中,官方与社区均强烈主张优先采用 import 模块 形式,理由十分明确:

  • 保障代码的可追溯性:numpy.array() 的意图远比裸写的 array() 清晰,阅读者能瞬间定位依赖来源。
  • 阻断命名空间污染:Python 生态中开源组件极多,大量通用工具类存在重名现象。坚持使用前缀能有效防止关键逻辑被意外篡改。
  • 增强依赖边界感:显式声明引入的模块,能够帮助后续接手的项目成员迅速掌握架构轮廓与耦合关系。

以上就是 Python 中 from…import *和import区别及规范使用的详细内容,更多关于 Python 模块管理与优化编码的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。