繁体   English   中英

在哪里导入模块

[英]Where to import modules

可以说我有一个名为device的模块,其中包含一个名为ConfigureDevice的类。 还可以说我有一个名为comports的模块,该模块在一个称为ComPorts的类中定义了我的com端口(C中的枚举)。

现在,让我们说说ConfigureDevice的构造函数带有一个称为comPorts的参数。 问题是,我应该在设备模块的开头导入端口还是应该由创建ConfigureDevice的代码进行此导入?

因此,应该在此处进行导入命令

# device module
import serialwriter
import comports

class ConfigureDevice:
    def __init__(self, comPort):
        self.serialWriter = serialwriter.SerialWriter(comPort)

还是应该将其导入创建ConfigureDevice的代码中,如下所示:

import device
import comports

...

device.ConfigureDevice(comports.ComPorts.COM_1)

通常,应该始终将import放在模块程序员希望在其中找到的模块的顶部,因为这样任何导入错误都将在程序启动时立即发生,而不是在最后调用函数时发生。 我们通常只将import放在函数内部,因为(a)我们试图避免设计不良的模块之间的笨拙的导入循环,或者(b)因为我们要使第3方库成为可选,以便仅在您需要时才需要它调用该函数。

更新:感谢您的代码示例! 除了我最初的建议外, import始终位于文件的顶部,我现在可以另外建议您从设备模块中删除comport的导入,因为从我所看到的情况来看,您永远不会在此处使用该模块–我不会请在设备模块代码中的任何位置查看名称comport 通常,如果您尝试从文件中删除import语句,但程序仍在运行,则该语句首先不属于该语句。 pyflakes程序可以帮助您找到在代码演变时不再有用的import语句。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM