我有一个模块,它定义了一个从两个(或多个)其他模块之一实例化一个类的类。下面是几个代码示例。在第一个示例中,导入了两个模块,但只使用了一个(每个 MyIo 实例一个)。在第二个示例中,仅导入所需的模块。在更高级别的模块中可能有一个或多个 MyIo 实例。
我喜欢第二个示例只导入使用的内容,但我不太喜欢它import
发生在“代码执行”部分。
我的问题是:
- 哪个示例是更好的架构选择,为什么?
- 导入最终未使用的模块是否会受到惩罚?
- Python 中代码执行部分的导入是否被认为是“错误的形式”?
此示例导入两个模块,但只使用一个...
''' MyIo.py '''
...
...
from DevSerial import Device as DeviceSerial
from DevUSB import Device as DeviceUSB
class MyIo:
def __init__(self, port)
if port.lower() == 'usb':
self.device=DeviceUSB()
else:
self.device=DeviceSerial(port)
...
...
以下仅导入正在使用的模块...
''' MyIo.py '''
...
...
class MyIo:
def __init__(self, port)
if port.lower() == 'usb':
from DevUSB import Device
self.device=Device()
else:
from DevSerial import Device
self.device=Device(port)
...
...