假设我有一个名为 device 的模块,其中包含一个名为 ConfigureDevice 的类。还可以说我有一个名为 comports 的模块,它在一个名为 ComPorts 的类中定义了我的com端口(C中的枚举)。
现在,假设 ConfigureDevice 的构造函数采用名为comPorts的参数。问题是,我应该在设备模块的开头导入 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)
答案 0 :(得分:4)
您通常应该将import
放在模块的顶部,Python程序员可以在其中找到它,因为任何导入错误都会在程序启动时发生,而不是在函数发生的时候发生。终于被召唤了。我们通常只将import
放在一个函数中,因为(a)我们试图避免在设计错误的模块中进行笨拙的导入循环,或者(b)因为我们想让第三方库可选,所以你只能如果你打电话给那个功能就需要它。
更新:感谢您提供代码示例!除了我最初的建议,import
始终位于文件的顶部,我现在还可以建议您从设备模块中删除comport
的导入,因为从我看到的,你永远不会在那里使用模块 - 我在设备模块代码中的任何地方都看不到名称comport
。通常,如果您尝试从文件中删除import
语句但程序仍在运行,则该语句首先不属于该语句。 pyflakes程序可以帮助您查找随着代码的发展而不再有用的import
语句。