模块的问题解决了代码过长不便维护的问题,但是如果不同的人编写的模块名相同怎么办?为了变量模块名冲突,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中是必须的),这个文件是包的入口文件,导入包时,会自动执行这个文件中的代码。
- 第1章 编程基础
- 零基础能学Python吗?
- 编程语言是什么
- 编译型与解释型编程语言的区别
- python是什么?
- 学python能干什么?
- 第2章 python开发环境搭建
- windows下安装python
- cmd命令行工具
- 环境变量如何设置?
- 如何运行python程序?
- 学习神器Jupyter lab
- 第3章 基本数据类型
- 基本数据类型概述
- 变量的定义和使用
- 整数类型
- 浮点数类型
- 算术运算符
- 赋值运算符
- 字符串类型
- 字符串常用方法
- 字符串格式化
- 列表类型
- 元组类型
- 可变与不可变类型
- 深浅拷贝
- 集合类型
- 字典类型
- 布尔型
- NoneType
- 第4章 程序流程控制
- 程序结构
- if分支语句
- while条件循环
- for循环
- 循环控制关键字
- 异常处理
- 第5章函数与代码复用
- 函数的定义和调用
- 函数的参数
- 函数的返回值
- lambda函数
- 变量作用域
- python内建函数
- 第6章 面向对象
- 类和对象
- 属性
- 方法
- 继承
- super()函数
- 多态
- 私有化
- 自省与反射机制
- 第7章 模块和包
- 模块
- 包
- 第三方库
- 第8章 文件IO操作
- 文件概述
- 字符编码
- 字节类型
- python读取文件
- python写文件
- 文件指针