我对导入python模块有疑问。
例如,使用pandas,我可以这样做:
import pandas as pd
然后我可以直接从pd对象访问所有函数和子模块。
然而,当我对sklearn做同样的事情时,
import sklearn as sk
我无法从sk对象访问子模块。这个对象只提供了一些方法和属性。
例如我想使用sklearn.feature_extraction.text.CountVectorizer()函数,但我做不了类似的事情:
sk.feature_extraction.text.CountVectorizer()
我必须首先显式导入文本模块,然后使用其功能:
import sklearn.feature_extraction.text as sk_text
sk_text.CountVectorizer()
有人可以解释一下发生了什么以及如何解决这个问题吗?
答案 0 :(得分:2)
模块的某些部分在其构造中明确分开,因此用户必须明确地导入它们。当库(例如Scikit-learn)拥有如此多的子库时,这有助于防止命名空间混乱并减少内存需求。