You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中<code>from module import *</code>与<code>import module</code>区别及不良实践原因

Python两种导入语句的差异与from module import *的弊端

两种导入语句的核心差异:
使用from module import *导入后,可直接调用目标模块内的类、函数等对象,就像这些对象定义在当前导入文件中一样;使用import module导入时,调用模块内对象需要在名称前添加module.前缀。

from module import *在多数生产开发场景下被认定为不良实践,核心原因有以下几点:

  • 命名空间污染与冲突风险
    如果同时导入多个模块,不同模块的同名函数、类、变量会互相覆盖,且不会触发任何报错提示。例如同时执行from csv import *和from json import *,两个模块都存在同名的读取方法,最终调用的逻辑完全由导入顺序决定,这类隐性bug的排查成本极高。
  • 代码可读性大幅降低
    阅读代码时,无法直接判断当前调用的对象是当前文件原生定义,还是来自某个导入的模块,需要额外翻找头部的导入语句才能确认,大幅提升后续的代码维护成本。而import module的写法可以通过module.func()的格式直观标识对象来源,不存在这个问题。
  • 违反官方编码规范
    Python官方的PEP 8编码规范明确要求生产环境代码尽量避免使用from module import *的写法,仅允许两种例外场景:一是交互式编程场景下为了减少输入成本使用,二是模块通过__all__属性明确声明了导出的公开接口列表。
  • 依赖升级风险高
    如果依赖的第三方模块后续版本迭代中删除、重命名了某个对象,使用import *的代码报错后无法快速定位缺失对象的来源,而明确导入或者带前缀调用的写法可以直接定位到对应的模块,排查效率更高。

内容的提问来源于stack exchange,提问作者Dadá

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 06:39:02