包,其实在上面的一些例子中,都创建了不同的包名了,具体可以仔细观察。在一开始??榈募蚪橹刑岬?,使用??榭梢员苊夂捅淞棵逋?。相同名字的函数和变量完全可以分别存在不同的??橹?,因此,我们自己在编写??槭?,不必考虑名字会与其他模块冲突。但是也要注意,尽量不要与内置函数名字冲突。但是这里也有个问题,如果不同的人编写的??槊嗤趺窗??为了避免模块名冲突,Python 又引入了按目录来组织模块的方法,称为包(Package)。
比如最开始的例子,就引入了包,这样子做就算有相同的模块名,也不会造成重复,因为包名不同,其实也就是路径不同。如下图,引入了包名后, lname.py 其实变成了 com.Learn.module.nameattributes.lname
仔细观察的人,基本会发现,每一个包目录下面都会有一个 __init__.py 的文件,为什么呢?
因为这个文件是必须的,否则,Python 就把这个目录当成普通目录,而不是一个包 。 __init__.py 可以是空文件,也可以有Python代码,因为 __init__.py 本身就是一个???,而它对应的??槊褪撬陌?/p>