2016-12-28 46 views
0

当使用scikit学习或其他类似的Python库,有什么做的区别:导入整个模块与从python模块导入所需方法有什么区别?

import sklearn.cluster as sk 
model = sk.KMeans(n_clusters=n) 

而且

from sklearn.cluster import KMeans 
model = KMeans(n_clusters=n) 

是否有任何优势,使用一种方法比其他?

+0

欢迎来到StackOverflow。请阅读并遵守帮助文档中的发布准则。 [在主题](http://stackoverflow.com/help/on-topic)和[如何提问](http://stackoverflow.com/help/how-to-ask)适用于此处。 StackOverflow不是一个编码或教程服务。 这在Python文档和许多文本中都有很好的介绍,包括硬拷贝和在线文档。 – Prune

+2

正如[这里]所述(https://softwareengineering.stackexchange.com/questions/187403/import-module-vs-from-module-import-function/187471)“*导入模块不会浪费任何东西;模块总是完全导入*“所以没有办法导入*只有*从模块的具体事情 – CoryKramer

+1

@Prune从**如何问**:”例子:好:为什么使用float而不是int给我不同的结果当我所有的输入都是整数?“ - 为什么我的问题与例子不同? –

回答

1

那么,在您的第一个示例中,您已将模块sklearn.cluster作为sk进行访问,您可以相应地引用其成员。在第二个示例中,您只导入了sklearn.cluster,KMeans的一个成员,因此只有该成员可以访问。这是不同的。

至于优点?不管哪一个让你的代码更容易阅读。

+2

“*你只输入了一个成员...所以只有这个成员可以访问*”我会小心这个措辞。他们实际上已经导入了*整个模块*,仅仅是'kMeans'是可访问的* – CoryKramer

+0

这可能是一个语义问题。是的,整个模块被加载(从'sys.modules'中可以看到),但我指的是'import'关键字。 – 2rs2ts