【问题标题】:“from module import *” VS “import module”“从模块导入 *” VS “导入模块”
【发布时间】:2021-12-08 07:07:08
【问题描述】:

from module import * VS import module

我知道的

我知道两者的区别,区别在于当你使用from module import *时,你可以只引用模块中的类、函数等,就像它们在它们自己导入的文件中定义一样。

但是当你只是使用import module时,你必须在对象名称前使用module.来引用它。

问题

所以我不知道为什么有时使用from module import * 而不是import module 被认为是不好的做法?

【问题讨论】:

  • 仅导入您需要的内容:use-import-module-or-from-module-import - 执行 * import 会使您的命名空间变得混乱。在你的厨房里,你更喜欢一个装锅的抽屉,另一个装刀叉勺子的抽屉和一个装保鲜膜(urks)等的抽屉,还是你想要各种各样的刀,保鲜膜,锅、 叉子和勺子飞来飞去。对于导入,情况更是如此:如果您只是将它们全部放入命名空间中,可能会出现名称冲突。

标签: python python-3.x import module


【解决方案1】:

PEP 8 声明

应避免通配符导入 (from <module> import *),因为它们 不清楚命名空间中存在哪些名称,令人困惑 阅读器和许多自动化工具。有一种合理的用途 通配符导入的情况,即重新发布内部 接口作为公共 API 的一部分(例如,覆盖纯 接口的 Python 实现,其定义来自 可选的加速器模块以及确切的定义将是 被覆盖是事先不知道的)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-17
    • 1970-01-01
    • 1970-01-01
    • 2017-06-19
    • 2015-10-06
    • 1970-01-01
    相关资源
    最近更新 更多