模块,用一砣代码实现了某个功能的代码集合。
类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合。而对于一个复杂的功能来,可能需要多个函数才能完成(函数又可以在不同的.py文件中),n个.py文件组成的代码集合就称为模块。
使用模块有什么好处:
1:大大提高了代码的可维护性,次,编写代码不必从零开始。当一个模块编写完毕,就可以被其他地方引用。我们在编写程序的时候,也经常引用其他模块,包括Python内置的模块和来自第三方的模块。
2:可以避免函数名和变量名冲突。相同名字的函数和变量完全可以分别存在不同的模块中,因此,我们自己在编写模块时,不必考虑名字会与其他模块冲突。但是也要注意,尽量不要与内置函数名字冲突。点这里查看Python的所有内置函数。
如果不同的人编写的模块名相同怎么办?为了避免模块名冲突,Python又引入了按目录来组织模块的方法,称为包(Package)。另外,需要注意,自己创建的模块名,不要和python自带的模块名称冲突
模块分为:
l 自定义模块
l 内置标准模块(又称为标准库)
l 开源模块
1:自定义模块:
导入模块:
方法:
importmodule
from module.xx.xximport xx
from module.xx.xximport xxas rename
from module.xx.xximport *
导入模块其实就是告诉Python解释器去解释那个py文件
l 导入一个py文件,解释器解释该py文件
l 导入一个包,解释器解释该包下的 __init__.py 文件
那么问题来了,导入模块时是根据那个路径作为基准来进行的呢?即:sys.path,输出列表的等式
importsys
print(sys.path)
### 输出结果
['C:\\Users\\zhang\\PycharmProjects\\S12\\day5','C:\\Users\\zhang\\PycharmProjects\\S12','C:\\WINDOWS\\SYSTEM32\\python34.zip','D:\\python34\\DLLs','D:\\python34\\lib','D:\\python34','D:\\python34\\lib\\site-packages']
如果sys.path 没有你想要的路径,可以通过 sys.path.append('路径')添加,通过os模块可以获取各种目录,例如:
importsys
import os
print(os.path.abspath('../'))
sys.path.append(os.path.abspath('../'))
print(sys.path)
### 输出结果
C:\Users\zhang\PycharmProjects\S12
['C:\\Users\\zhang\\PycharmProjects\\S12\\day5','C:\\Users\\zhang\\PycharmProjects\\S12','C:\\WINDOWS\\SYSTEM32\\python34.zip','D:\\python34\\DLLs','D:\\python34\\lib','D:\\python34','D:\\python34\\lib\\site-packages','C:\\Users\\zhang\\PycharmProjects\\S12']
2:开源模块
2-1:下载安装
方式一:
yum
pip
apt-get
……
2-2:源码
解压源码
进入目录
编译源码 python setup.py build
安装源码 python setup.py install
注:在使用源码安装时,需要使用到gcc编译和python开发环境,所以,需要先执行:
yuminstall gcc
yuminstall python-devel
或
apt-getpython-dev
安装成功后,模块会自动安装到 sys.path中的某个目录中,如:
\python34\\lib\\site-packages