0

我正在阅读很棒的 python 扭曲教程http://krondo.com/?page_id=1327有点混乱,在许多示例中,在 python 文件中而不是在开始时多次导入扭曲的反应器或其他模块。因为在 python 方式中,我们在文件开头使用导入模块。任何人都可以详细说明。

4

1 回答 1

1

一般来说,您是正确的——在 Python 中,与大多数语言一样,模块中的相关导入语句应该位于模块的开头,在那里很容易找到它们。在大多数情况下,这是可取的,所以这就是它的教学方式。

但像大多数规则一样,也有例外。Python 允许在函数和类定义中以及在模块级别使用 import 语句。将导入放在函数中的一个很好的理由是,某些导入实际上可能是相当昂贵且耗时的操作。

在 Twisted's 的案例中,from twisted.internet import reactor幕后有很多额外的工作和魔法。因此,将导入推迟到实际需要时更有意义——最好是在一个只会被调用一次(或在极少数情况下)的函数中。Twisted 特有的另一个原因(前面提到的“魔术”)是导入的行为reactor会创建该对象的单例实例,而其他代码可能会影响反应器实例的创建方式。所以我们推迟导入反应器,直到任何其他设置代码有机会执行。

有时需要使用这些内联导入的最后一个原因是循环导入的问题。除非您询问,否则我不会在这里详细介绍,但我认为您可以在此站点上找到有关该问题的其他讨论。

于 2012-12-07T16:58:33.943 回答