Python中模块实际上是包含函数或者类的Python程序,对于大型程序经常将功能细化,将实现不同功能的代码放在不同的程序中实现,其他的程序以模块的形式使用细化的功能,这样便于维护和重用。
模块是包含函数和其他语句的Python脚本文件,以“.py”为后缀。
1、调用模块
python中以下面的方法导入模块或者模块中的函数
- import 模块名
- import 模块名 as 新名字
- from 模块名 import 函数名
模块的调用示例:
import math
import math as myMath
from math import sqrt
print('调用math.sqrt', math.sqrt(4))
print('调用myMath.sqrt', myMath.sqrt(4))
print('调用sqrt', sqrt(4))
运行结果:
调用math.sqrt 2.0
调用myMath.sqrt 2.0
调用sqrt 2.0
2、编写自己的模块
编写自己的模块与平时写的Python程序是形同的,而模块名称就是文件名;
自定义模块示例:
# 自定义模块
# 文件名:MyPyModel.py
class MyTestModel:
def __init__(self, value=10):
self.value = value
def getValue(self):
return self.value
def setValue(self, value):
self.value = value
# 自定义模块的调用
import MyPyModel
test = MyPyModel.MyTestModel(20)
print(test.getValue())
运行结果:
20
3、模块的位置
- 可以与调用模块文件同一目录
- sys.path中的路径
添加模块路径的方法:
import sys
print(sys.path) # 查看当前模块的路径列表
sys.path.append(myModelPath) # 添加自定义模块的路径
4、__pycache__目录
在调用完自定义模块后,会生成一个名为__pycache__目录,包含一个文件MyPyModel.cpython-36.pyc
模块第一次调用后会生成字节码文件,提高程序的启动速度。
python中不会在运行脚本后将其编译成字节码文件,可以使用compile模块编译
import py_compile
py_compile.compile('G:\\work\\python\\MyTestPy.py', 'G:\\work\\python\\MyTestPy.pyc')
生成文件MyTestPy.py的字节码文件
5、其他
- python中每一个程序都有一个__name__属性
- 模块中__name__属性为模块名
- 独立程序中__name__属性为__main__
示例:
# 自定义模块
# 文件名:MyPyModel.py
class MyTestModel:
def __init__(self, value=10):
self.value = value
def getValue(self):
return self.value
def setValue(self, value):
self.value = value
if __name__ == '__main__':
myTest = MyTestModel('ModelTest')
print(myTest.getValue())
# 自定义模块的调用
import MyPyModel
if __name__ == '__main__':
test = MyPyModel.MyTestModel(20)
print(test.getValue())
运行结果:
20