模块的问题解决了代码过长不便维护的问题,但是如果不同的人编写的模块名相同怎么办?为了变量模块名冲突,python又引入了用目录来组织模块的方法,称为包。 例如: 为了避免`fibo.py`与其他模块冲突,我们可以选择一个顶层包名,比如`my_fibo`。 创建名为`my_fibo`的文件夹,将模块`fibo.py`放入该文件夹下。 然后通过`import 包名.模块名`的方式导入,只要顶层包名不起冲突,模块就不会起冲突。 现在`fibo`模块的引入就是这样的: ```python >>> import my_fibo.fibo ``` 但是这样导入引用时要用全名 ```python >>> my_fibo.fibo.fib(10) 0 1 1 2 3 5 8 ``` 也可以结合`from`以`from 包名 import 模块名`的形式来引用 ```python >>> from my_fibo import fibo ``` 这样就可以以模块`fibo`来调用其中的函数 ```python >>> fibo.fib(10) 0 1 1 2 3 5 8 ``` 也可以以`from 包名.模块名 import 名称`的形式直接导入所需函数和变量 ```python >>> from my_fibo.fibo import fib ``` 这样可以直接调用`fib`函数 ```python >>> fibo(10) 0 1 1 2 3 5 8 ``` 注意:每一个包目录下一般都有一个`__init__.py`文件(python2中是必须的),这个文件是包的入口文件,导入包时,会自动执行这个文件中的代码。