关于python中dir和import的问题

Liu*_*eng 2 python python-import python-3.x

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

>>>import urllib
>>>dir(urllib)
['__builtins__', '__cached__', '__doc__', '__file__','__loader__','__name__','__package__', '__path__', '__spec__']
Run Code Online (Sandbox Code Playgroud)

当我这样做的时候

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

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

我真的很感谢你的帮助!

Ana*_*mar 5

urllib是一个包,而 inurllib.request是包request内的模块urllib

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

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