Files
Python/Article/PythonBasis/python9/4.md

22 lines
1.3 KiB
Markdown
Raw Normal View History

# 四、包 #
2019-10-14 17:57:06 +08:00
包,其实在上面的一些例子中,都创建了不同的包名了,具体可以仔细观察。
在一开始模块的简介中提到,使用模块可以避免函数名和变量名冲突。
相同名字的函数和变量完全可以分别存在不同的模块中,因此,我们自己在编写模块时,不必考虑名字会与其他模块冲突。但是也要注意,尽量不要与内置函数名字冲突。
但是这里也有个问题,如果不同的人编写的模块名相同怎么办?
为了避免模块名冲突Python 又引入了按目录来组织模块的方法称为包Package
比如最开始的例子,就引入了包,这样子做就算有相同的模块名,也不会造成重复,因为包名不同,其实也就是路径不同。如下图,引入了包名后, lname.py 其实变成了 com.Learn.module.nameattributes.lname
2019-10-14 17:57:06 +08:00
![](http://twowaterimage.oss-cn-beijing.aliyuncs.com/2019-10-14-Python%20%E5%8C%85.png)
仔细观察的人,基本会发现,每一个包目录下面都会有一个 `__init__.py` 的文件,为什么呢?
2017-12-22 16:14:43 +08:00
因为这个文件是必须的否则Python 就把这个目录当成普通目录,而不是一个包 。 `__init__.py` 可以是空文件也可以有Python代码因为 `__init__.py` 本身就是一个模块,而它对应的模块名就是它的包名。
2019-10-14 17:57:06 +08:00