gpt4 book ai didi

python - 为什么 Python 模块有时不导入它们的子模块?

转载 作者:IT老高 更新时间:2023-10-28 21:34:42 27 4
gpt4 key购买 nike

我今天注意到一些奇怪的事情,我想解释一下。我不是 100% 确定如何将其表述为一个问题,所以谷歌是不可能的。由于某些奇怪的原因,日志记录模块无权访问模块 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'>

谁能解释为什么会这样?

最佳答案

在 Python 中,需要先导入模块才能访问它们。 import logging 只导入日志模块。碰巧 logging 是一个带有子模块的包,但是这些子模块仍然没有自动加载。因此,您需要先显式导入 logging.handlers 才能访问它。

如果你想知道为什么有时你不需要那些额外的导入:一些包在导入时会导入它们的部分或全部子模块——只需在它们的 __init__.py 中进行这些导入 文件。在其他情况下,可能是您导入的其他内容也导入了 logging.handlers。导入哪一段代码并不重要;只要您的进程中的 something 在您访问它之前导入 logging.handlers,它就会在那里。有时看起来像包的模块实际上并不是一个包,例如 osos.pathos 不是一个包,它只是导入正确的其他模块(适用于您的平台)并将其称为 path,这样您就可以作为 os 访问它。路径.

关于python - 为什么 Python 模块有时不导入它们的子模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3781522/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com