【问题标题】:How do I read code where "from <module> import *" is used?如何读取使用“from <module> import *”的代码?
【发布时间】:2012-03-23 20:37:26
【问题描述】:

假设我阅读了其他人编写的使用“from import *”的代码,我如何确定函数来自哪个模块?这就是为什么有些人不喜欢“from import *”的原因吗?

【问题讨论】:

  • 这可能是一个很好的答案:stackoverflow.com/a/3615206/770830
  • 进入python shell,运行(公认的坏风格)import *,然后执行str(function)——这将告诉你它来自哪个模块......然后用正确的导入替换; )
  • 我刚做了这个..它似乎不像你说的那样。
  • str 不会成功。您可以做的是查看每个函数的__module__,例如from urllib2 import urlopen; urlopen.__module__'urllib2'.

标签: python import module readability


【解决方案1】:

是的,这就是为什么from &lt;module&gt; import * 被认为是糟糕的风格。您可以做的就是将这些* 导入一一删除,然后检查您获得了哪些NameError,并通过显式导入一一解决。

【讨论】:

  • 好主意。如果from &lt;m&gt; import * 碰巧覆盖了本地命名空间中的某个对象的名称,这当然会失败。然后你会在删除import 语句后得到所有可能的错误。这是不使用此构造的另一个原因。
【解决方案2】:

from ... import *PEP8 不推荐的坏样式(python 样式指南)。除了编辑代码(将from ... impot * 替换为'import ...'并查找错误)之外,没有其他方法可以知道哪个模块的功能。不幸的是,这些错误只有在执行相应的代码部分时才会发生。

【讨论】:

    猜你喜欢
    • 2021-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-28
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 2014-04-21
    相关资源
    最近更新 更多