在Python中,仅仅为了以更方便的方式公开某些内容,是否认为是一种不好的做法?

2024-06-08 09:25:42 发布

您现在位置:Python中文网/ 问答频道 /正文

如果没有一个例子,这可能就没有意义了。我在我的Django应用程序中使用了python-disqus,我对它进行了包装,以便更好地将其与应用程序的其余部分分离。在

我有档案,取消.py,它导入disqusapi,并定义了许多助手函数。在应用程序代码的其他地方,我可以简单地添加from mango import disqus,但在一些地方,有必要捕获在进行API调用时可能引发的异常。这意味着我不得不做一些类似的事情:

from disqusapi import APIError
from mango import disqus

try:
    disqus.thread.fetch(1)
except APIError, error:
    logger.warn('Disqus API error: %s' % error)

如果我改为在取消.py,我可以写:

^{pr2}$

Pyflakes抱怨未使用的导入,但这似乎是一个合理的做法。我应该高兴地忽略Pyflakes,还是错过了一个更好的选择?在

为了清楚起见,我不需要以任何方式修改disqusapi.APIError,因此子类化是不必要的。在


Tags: djangofrompyimportapi应用程序地方error
3条回答

一个__init__.py或一个包充满明显“未使用”的导入是相当常见的。我认为pyflakes关于未使用的概念似乎有点简单化,因为可以清楚地看到,这个import是在另一个模块中使用的。在

如果你不得不忽视它,那是很烦人的。也许pyflakes有某种pragma可以覆盖这种行为。在

它是否是好的样式取决于应用程序的结构。我认为你可以为双方都提出论点

如果您需要使用某个东西并且它不会在您的命名空间中发生冲突,那么from x import y它并不是不合适的。在

但是,出于自我文档的考虑,您可能更喜欢第二个选项。如果有人在阅读您的代码,他们可能不知道错误与哪个API有关,但是从名称空间提取它可以避免任何歧义。在

In Python is it considered bad practice to import something solely to expose it in a more convenient manner?

简而言之:不

长话短说,如果您正在编写一个包装器,使您自己的代码更简单、更易于理解,那么您可以随心所欲。如果要包装其他代码,或导入模块并将其子类化,或导入模块并更改其方法。在

如果你在为其他人编写代码,你可能需要添加注释来解释你在做什么。如果只是为了你自己,一切都很好。在

相关问题 更多 >