什么';这两种python导入方法的区别是什么?

什么';这两种python导入方法的区别是什么?,python,python-3.x,Python,Python 3.x,我正在使用Python 3.7.6。我有两个脚本: from html.parser import HTMLParser try: parser = HTMLParser() except: print('something went wrong') print('end') 其中打印: end something went wrong end 第二个脚本: import html try: parser = html.parser.HTMLParser()

我正在使用Python 3.7.6。我有两个脚本:

from html.parser import HTMLParser

try:
    parser = HTMLParser()
except:
    print('something went wrong')

print('end')
其中打印:

end
something went wrong
end
第二个脚本:

import html

try:
    parser = html.parser.HTMLParser()
except:
    print('something went wrong')

print('end')
其中打印:

end
something went wrong
end
为什么第一个有效,而第二个无效?

如果您查看
html
库的示例,您会对发生的情况有一点了解

import html
将导入包中的
\uuuu init\uuuuu.py
文件。它不知道该目录中的任何其他内容,只知道文件中的内容

import html.parser
将加载
parser.py
文件中的内容,但对
\uuuu init\uuuuu.py
中的内容一无所知。由于
HTMLParser()
位于
parser.py
中,您必须导入模块然后调用类,或者直接导入类

这两种方法中的任何一种都可以正常工作:

import html.parser
parser = html.parser.HTMLParser()

from html import parser
parser = parser.HTMLParser()

不要忽略异常,让它不受破坏,这样您就可以看到引发了什么。一个“空的”
except:
语句是个坏主意。