Python 对于当前模块中未导入的模块中的对象,我应该怎么做?

Python 对于当前模块中未导入的模块中的对象,我应该怎么做?,python,matplotlib,module,Python,Matplotlib,Module,我不知道这是否真的是一个技术问题,但可能更多的是一个关于良好实践的问题 假设您编写了一个包含多个函数的模块,这些函数使用matplotlib的Figure对象。函数获取fig对象作为参数并返回该fig对象。例如: def do_smth(fig, args): """ do something on fig""" fig.suptitle("plop") # more stuff return fig 上述函数不需要导入matplotlib模块 我有麻烦了。在不

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

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

def do_smth(fig, args):
    """ do something on fig"""
    fig.suptitle("plop")
    # more stuff
    return fig
上述函数不需要导入matplotlib模块


我有麻烦了。在不导入此模块的情况下,编写一个完整的模块,其中包含处理来自另一个模块的对象的函数,可以吗?在文件中提到这一点就够了吗?对这类案件有什么建议吗?当然,我之所以得到这种情况,是因为模块的感觉是错误的吗?

如果希望模块使用另一个模块中的对象,为了清晰起见,我会说您应该导入另一个模块

毕竟,Python缓存导入。如果已导入另一个模块,则再次尝试导入该模块不会产生任何成本。如果其他模块尚未导入。。。这个模块,或者至少是处理来自另一个模块的对象的函数,是非常无用的(因为您将无法让来自另一个模块的对象传递给这个模块中的函数)


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

如果希望该模块使用其他模块中的对象,为了清晰起见,我建议您导入其他模块

毕竟,Python缓存导入。如果已导入另一个模块,则再次尝试导入该模块不会产生任何成本。如果其他模块尚未导入。。。这个模块,或者至少是处理来自另一个模块的对象的函数,是非常无用的(因为您将无法让来自另一个模块的对象传递给这个模块中的函数)

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