【问题标题】:What's the difference between importing a whole module vs importing just the required method from the module in python? [duplicate]导入整个模块与仅从 python 中的模块导入所需的方法有什么区别? [复制]
【发布时间】:2017-05-13 01:58:18
【问题描述】:

在使用scikit learn或者其他类似的Python库时,做起来有什么区别:

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

还有

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

使用一种方式比另一种方式有什么优势吗?

【问题讨论】:

  • 欢迎来到 StackOverflow。请阅读并遵循帮助文档中的发布指南。 on topichow to ask 在这里申请。 StackOverflow 不是编码或教程服务。这在 Python 文档和许多文本中都有很好的介绍,包括硬拷贝和在线。
  • 解释here "导入模块不会浪费任何东西;模块总是完全导入" 所以没有办法只导入 i> 来自模块的特定事物
  • @Prune from how to ask:“示例:很好:当我的所有输入都是整数时,为什么使用 float 而不是 int 会给我不同的结果?” -- 为什么我的问题与示例不同?
  • 我认为这是一个很好的问题。当然,这个问题有据可查,另一个 SE 网站上也有类似的问题,但这也是一个措辞恰当的问题,有简洁明了的例子。
  • 足够好 -- 撤回反对。我会把我的评论作为一个不好的例子留下一个很好的纠正。

标签: python scikit-learn sklearn-pandas


【解决方案1】:

嗯,在您的第一个示例中,您已将模块 sklearn.cluster 设为可访问为 sk,您可以相应地引用其成员。在您的第二个示例中,您只导入了sklearn.clusterKMeans 的一个成员,因此只能访问该成员。这就是区别。

至于优势?做任何让你的代码更容易阅读的事情。

【讨论】:

  • 你只导入了一个成员......所以只有一个可以访问”我会小心这个措辞。他们实际上已经导入了整个模块,只是只有kMeans可访问
  • 这可能是语义问题。是的,整个模块都已加载(从sys.modules 可以看出),但我指的是import 关键字。
猜你喜欢
  • 1970-01-01
  • 2019-09-21
  • 2020-11-10
  • 1970-01-01
  • 2017-06-21
  • 2015-11-22
  • 1970-01-01
  • 2015-10-06
  • 2020-12-02
相关资源
最近更新 更多