特异性导入Python模块?(Specificity in importing python mod

2019-10-20 16:48发布

我一直在工作与PySerial库蟒蛇Pyserial API ,我似乎无法理解为什么我要特别导入模块的某一部分。

这会给我一个错误:

import serial
for item in serial.tools.list_ports.comports():
    print item

上面的代码将返回“AttributeError错误:类型的对象‘系列’有没有属性‘工具’”

如果我导入属性而言,我没有得到任何错误:

import serial.tools.list_ports
for item in serial.tools.list_ports.comports():
    print item

有人可以帮助我理解为什么第一个导入将不运行相称()方法?

据我所知,进口较少的项目到内存是最佳的做法,但我也使用来自PySerial模块等方法。 这似乎是多余的导入串行和serial.tools.list_ports。

Answer 1:

导入serial会导致生成的模块创建的所有名字。 直到你意识到这听起来自我明显serial不创建一个名为“工具”中的任何属性。 这其实是一个独立的模块。

import做了你的青睐导入主模块的,这也是为什么进口serial.tools.list_ports也进口serial.tools 。 它导入serial ,但你应该将其导入明确,而不是Python的为你做的事故。

>>> import this
The Zen of Python, by Tim Peters

 ...
Explicit is better than implicit.
 ...


文章来源: Specificity in importing python module?