【问题标题】:What should I do about object from modules not imported in the current module?对于当前模块中未导入的模块中的对象,我该怎么办?
【发布时间】:2017-01-03 07:23:05
【问题描述】:

我不知道这是否真的是一个技术问题,但可能更多的是关于良好做法的问题。

假设您编写了一个模块,其中包含多个与 matplotlib 的 Figure 对象一起使用的函数。这些函数将 fig 对象作为参数并返回此 fig 对象。例如:

def do_smth(fig, args):
    """ do something on fig"""
    fig.suptitle("plop")
    # more stuff
    return fig

以上功能不需要导入matplotlib模块。

我对此有麻烦。是否可以编写一个完整的模块,其功能可以处理来自另一个模块的对象而不导入该模块?在文档中提及这一点就足够了吗?对这种情况有什么建议吗?当然,我得到这种情况是因为模块的感觉不对吗?

【问题讨论】:

    标签: python matplotlib module


    【解决方案1】:

    如果希望该模块与来自另一个模块的对象一起使用,我会说您应该导入另一个模块以清楚起见。

    毕竟,Python 会缓存导入。如果另一个模块已经导入,尝试再次导入它是免费的。如果尚未导入另一个模块......这个模块,或者至少是与来自另一个模块的对象一起使用的函数,几乎没有用(因为您将无法从另一个模块获取对象以传递给这个函数)。

    额外的导入纯粹是为了清晰 - 但它确实提供了很多清晰。如果有人检查需求,文档字符串中的一行比导入中的一行更容易丢失。如果您不包含导入,并且有人在没有其他可用的情况下导入您的模块(误解了您的目的),它会加载正常 - 但如果他们调用这些函数,可能会做一些他们没想到的事情。如果您确实包含了导入,并且他们尝试在没有其他可用模块的情况下导入您的模块,那么他们最终会出现错误,以提示他们您的模块的用途。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-31
      • 2015-08-24
      • 2018-04-16
      • 2017-10-19
      • 2023-01-05
      • 1970-01-01
      • 2011-02-08
      • 1970-01-01
      相关资源
      最近更新 更多