【发布时间】:2019-05-02 22:29:32
【问题描述】:
通常,当我导入模块时,我更喜欢只导入顶层模块并将所有内容都视为其中的成员,而不是将我需要的每个函数都导入到全局命名空间中,即:
import os
os.walk()
代替:
from os import walk
walk()
但是,我最近遇到了具有子模块的模块,这些子模块似乎必须全局导入才能运行。例如,Scikit-Learn 模块包含“cluster”子模块。我想这样做:
import sklearn as skl
skl.cluster.KMeans(...)
但这会引发错误,因为我没有初始化 sklearn.cluster。相反,我看到了这个:
from sklearn import cluster
cluster.KMeans(...)
我真的不喜欢这样,因为我不喜欢污染我的全局命名空间。有没有办法解决?我试过这个:
import sklearn as skl
import skl.cluster
但这也不起作用。如何在不全局导入的情况下初始化子模块?
【问题讨论】:
标签: python python-3.x import python-import