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

sklearn中import与from import的区别:为何特定导入语句失效?

为什么两种导入写法一个可行一个报错?
  • Python的import语法有明确规则:import后面只能跟包或者模块,不能直接导入模块里的类、函数这类成员,要导入成员必须用from ... import ...的语法。
  • 先看能运行的写法:from sklearn.impute import SimpleImputer as si
    这里sklearn.impute是一个合法的模块(对应sklearn包下的impute.py文件),SimpleImputer是这个模块里定义的类。from 模块 import 成员的语法就是专门用来直接抓取模块内具体成员的,完全符合Python的导入规则,所以能正常运行。
  • 再看报错的写法:import sklearn.impute.SimpleImputer as si
    这里的问题在于SimpleImputer不是模块也不是包,它是sklearn.impute模块里的一个类。Python不允许直接用import语句导入模块内的成员,你要么先导入模块再访问成员(比如import sklearn.impute; si = sklearn.impute.SimpleImputer),要么就用from...import的正确写法。
  • 额外提一句:有些包会在__init__.py里把内部成员导出,让用户看起来可以直接import 包.模块.成员,但本质上还是依赖from...import的逻辑,而sklearn的SimpleImputer并没有做这种层级的导出,所以直接这么写肯定报错。

内容的提问来源于stack exchange,提问作者gratus richard

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 06:42:46