模块
什么是模块
在计算机程序中,随着程序代码越写越多,在一个文件里的代码就会越来越长,不容易维护,为了编写可维护代码,就把很多函数进行分组,放在不同的文件中,这样每个文件内的代码就相对较少了
在python中,一个 .py
文件就可以称为一个模块
使用模块的好处
1、最大的好处是提高代码的可维护性,当一个模块编写完成后,就可以被其他地方调用,而不需要从零开始写
2、使用模块可以比避免函数名和变量名冲突,每个模块都有独立的命令空间,因此相同名字的函数和变量名完全可以分别存在不同的模块中,所以在编写模块时不会考虑名字是否和其他模块冲突
模块的分类
模块可以分为三种:
- 内置标准模块(又称标准库) 执行 help('modules')可查看所有python自带的模块列表
- 第三方开源模块,可通过 pip install <模块名> 进行联网安装
- 自定义模块,可自己写一个模块
模块的调用方法
import module
from module import xx
from module import xx as rename
from module.xx import *
# 模块一旦被调用,就相当于执行了另外一个 py 文件内的代码
模块查找路径
自己写的模块只能在当前路径下的程序里才能导入,被另外一个目录导入就提示找不到,这是因为和当前导入路径有关
# 可以通过 sys 模块查看默认路径
>>> import sys
>>> print(sys.path)
['', '/usr/local/python3.6/lib/python36.zip', '/usr/local/python3.6/lib/python3.6', '/usr/local/python3.6/lib/python3.6/lib-dynload', '/usr/local/python3.6/lib/python3.6/site-packages']
# python 解释器会按照 sys.path 内默认目录顺序去匹配的要导入的模块名
# 列表第一个元素为空就是表示当前目录,所以会优先调用当前目录
包(Package)
当你的模块越来越多时,就需要对模块文件进行划分
一个文件夹管理多个模块文件,这个文件夹就称为包,
不同包之间的模块互相导入就可以用 from <包名> import <模块名>
如果要让一个文件夹作为包存在,就必须在该文件存在一个 __init__.py
的文件,该文件内容为空。__init__.py
用于标识当前文件夹是一个包
文件夹被python解释器视作Package需要满足两个条件:
- 文件夹中必须要有 init.py 文件,该文件为空,但必须存在该文件
- 不能作为顶层模块来执行该文件夹中的 py 文件(即不能作为主函数的入口)