Python/python8/4.md

11 lines
1.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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