我今天注意到一些奇怪的事情,希望能够解释一下。我甚至不确定如何用问题来表达这个问题,因此谷歌是行不通的。出于某种奇怪的原因,logging模块无法访问logging.handlers模块。如果你不信,请自行尝试:
>>> import logging
>>> logging.handlers
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'handlers'
>>> import logging.handlers
>>> logging.handlers
<module 'logging.handlers' from '/usr/lib/python2.6/logging/handlers.pyc'>
有人可以解释一下为什么会发生这种情况吗?
from module import *
,这几乎总是错误的。 - Thomas Woutersfrom module import *
并不总是错误的,尽管99.9%的情况下至少对于内置模块来说是这样。有一些我使用的模块需要通配符导入,因为它们定义了许多需要使用的常量。 - Falmarriimport zipper
和zipper.open()
,你会完全知道我调用的是哪个 open。相反,from zipper import *
后跟open()
,它是内置的 open 还是 zipper.open 还是其他什么。如果你厌倦了输入zipper
,则更喜欢使用import zipper as z
。 - mswfrom numpy import *
,因为有些 numpy 函数只有在导入 numpy 的所有内容后才能使用(这是他们的糟糕设计缺陷,在我看来),但 numpy 导入了大量的对象。结果我不小心覆盖了很多函数(我相信其中一个是 copy……但我太累了,没法再去检查了)。现在如果我要经常使用 numpy,我会使用 import numpy as np,这样我就不用一遍又一遍地输入它的名称。 - chriscauley