关于 python 中的目录和导入的问题

questions about dir and import in python

我对 Python 的目录功能有一些疑问

>>>import urllib
>>>dir(urllib)
['__builtins__', '__cached__', '__doc__', '__file__','__loader__','__name__','__package__', '__path__', '__spec__']

当我这样做时

>>>import urllib.request
>>>dir(urllib)
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__','__package__', '__path__', '__spec__', 'error', 'parse', 'request', 'response']

为什么多了三个属性? 为什么请求属性一开始不在dir(urllib)中?

非常感谢您的帮助!

urllib 是一个包,而在 urllib.request 中,requesturllib 包中的一个模块。

导入包时,它不会自动导入包内的模块,除非该模块是由 __init__.py 为该包导入的。

但是 urllib__init__.py 是空的(在我的 Python 3.4 中是空的),因此当简单地导入 urllib 它不导入模块 urllib.request.