关于python中dir和import的问题

关于python中dir和import的问题,python,python-3.x,python-import,Python,Python 3.x,Python Import,我对Python的dir函数有一些疑问 >>>import urllib >>>dir(urllib) ['__builtins__', '__cached__', '__doc__', '__file__','__loader__','__name__','__package__', '__path__', '__spec__'] 当我喜欢这个的时候 >>>import urllib.request >>>dir(url

我对Python的dir函数有一些疑问

>>>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
中,
request
urllib
包中的一个模块

导入包时,它不会自动导入包内的模块,除非该模块是由该包的
\uuuu init\uuuuuuu.py
导入的


但是
urllib
\uuuuu init\uuuuuuuuuupy
是空的(在我的Python 3.4中它是空的),因此当简单地导入
urllib
时,它不会导入模块
urllib.request

urllib
包的
\uuuu init\uuuuuuuuuuuupy
在我的Python 3.5中也是空的。谢谢。我想知道当我导入urllib.request时urllib发生了什么,从而使dir()返回不同的值?导入时,request模块被添加为
urllib
模块对象的属性。以及导入
urllib.request
时导入的其他模块。