【问题标题】:How to check what gets imported when you use import *使用 import * 时如何检查导入的内容
【发布时间】:2017-02-26 01:23:34
【问题描述】:

我是 python 新手。我有一个非常基本的问题。当我们使用以下命令时(我知道使用 * 导入所有内容效率不高) from _ (任何模块名称) 导入 *

如何检查使用上述命令导入的内容?

【问题讨论】:

  • 在 phython 文档下,您可以看到“this”模块有什么以及如何使用它。
  • 这是我从 github 安装的一个包。我总是可以去查看 github 包中的所有文件,但我想要一种方法来知道我使用“*”命令导入了什么
  • @Pratik:这正是不鼓励您使用 * 导入的原因。您永远不知道 * 可以将什么拖入您的全局范围。

标签: python python-import


【解决方案1】:

您可以使用dir 查看当前模块中的名称。通过比较导入前后的名称,您可以看到导入的内容:

>>> vars_before_import = set(dir())
>>> from json import *
>>> set(dir()) - vars_before_import
set(['load', 'JSONEncoder', 'dump', 'vars_before_import', 'JSONDecoder', 'dumps', 'loads'])

排除vars_before_import

>>> set(dir()) - vars_before_import - {'vars_before_import'}
set(['load', 'JSONEncoder', 'dump', 'JSONDecoder', 'dumps', 'loads'])

注意

这不会捕获已被替换的对象(例如,您在导入 json 中的所有内容之前定义了 load)。

【讨论】:

  • 虽然是一个小细节,但这不会捕获已被替换的对象(例如,您在导入 json 中的所有内容之前定义了 load)。
  • @Blender,感谢您的评论。我错过了。我会更新答案以包含您的评论。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-05
  • 2015-12-05
  • 1970-01-01
  • 2017-07-11
  • 1970-01-01
  • 2022-10-05
  • 2021-12-17
相关资源
最近更新 更多