Python模块
模块的英文是modules,可以认为是一个盒子(箱)主题积木,通过它可以拼接出某一个主题的东西。一个函数相当于一块积木,而一个模块中可以包括很多函数,也就是很多积木,所以也可以说模块相当于一盒积木。
自定义模块
创建模块时,可以将模块中相关的代码(变量定义和函数定义等)编写在一个单独的文件中,并且将该文件命名为“模块名称 + .py”的形式。
如我们创建一个计算BMI的模块:
创建公共模块public.py
class Bmi:
"""计算BMI指数"""
def __init__(self):
print("开始计算...")
def fun_bmi(self, height, weight, person='路人'): #定义函数 需要3个参数,其中person默认='路人
"""
功能:根据身高和体重计算BMI指数
:param height:身高,单位:米
:param weight:体重,单位:千克
:param person:姓名
"""
print('【' + person + '】的身高' + str(height) + '米\t体重' + str(weight) + '千克')
bmi = weight / (height * height)
print('【' + person + '】的BMI指数为:', bmi)
print('指标分析:', end='')
if bmi < 18.5:
print('体重过轻')
elif bmi >= 18.5 and bmi < 24.9:
print('正常范围')
elif bmi >= 24.9 and bmi < 29.9:
print('体重过重')
else:
print('肥胖')
if __name__ == '__main__':
bmi_new = Bmi() # 实例化类
bmi_new.fun_bmi(1.7, 60, '张三')
创建bmi.py
from public import Bmi # 从public 导入Bmi这个类
class GetBmi:
"""
输入的身高、体重、姓名,给出BMI指数计算结果
"""
def __init__(self):
value = input("请输入身高(米)、体重(KG)、和姓名(以英文逗号分隔):")
new_value = value.split(',') # 以字逗号进行分割
# print(new_value)
one = Bmi() # 实例化
one.fun_bmi(float(new_value[0]), float(new_value[1]), new_value[2])
if __name__ == '__main__':
bmi = GetBmi() # 实例化
执行结果:
请输入身高(米)、体重(KG)、和姓名(以英文逗号分隔):1.7, 60, '张三'
开始计算...
【'张三'】的身高1.7米 体重60.0千克
【'张三'】的BMI指数为: 20.761245674740486
指标分析:正常范围
分析:首先我们创建了公共模块public.py,后面又随意创建了一个bmi.py,将我们前面创建的公共模块导入直接传参使用(这样让代码更加规范,让代码更易于阅读,方便其他程序使用已经编写好的代码,提高开发效率)。
使用import导入模块
import ModuleName as name
- ModuleName :导入的模块名称
- as name:重命名,可选参数
使用from…import导入模块
from ModuleName import member
- ModuleName :导入的模块名称
- member:导入的变量、函数或者类等
模块搜索目录
当使用import语句导入模块时,默认情况下,会按照以下顺序进行查找(如果以下3种方式中都没有找到需要导入的模块就会出现报错):
- 在当前目录(即执行的Python脚本文件所在目录)下查找。
- 在PYTHONPATH(环境变量)下的每个目录中查找。
- 到Python的默认安装目录下查找。
以上各个目录的具体位置保存在标准模块sys的sys.path变量中。可以通过以下代码输出具体目录:
import sys
print(sys.path)
执行结果:
['D:\\xuexi\\python', 'D:\\xuexi\\python', 'D:\\python\\python37.zip', 'D:\\python\\DLLs', 'D:\\python\\lib', 'D:\\python', 'D:\\python\\lib\\site-packages', 'D:\\python\\lib\\site-packages\\setuptools-39.1.0-py3.7.egg', 'D:\\python\\lib\\site-packages\\pip-10.0.1-py3.7.egg', 'D:\\pycharm\\PyCharm 2018.2.3\\helpers\\pycharm_matplotlib_backend']
如果找不到我们需要导入的模块,可以通过以下3种方式添加指定目录到sys.path中:
1. 零时添加
import sys
sys.path.append('D:\\SecureCRT') # 向sys.path中添加零时目录D:/SecureCRT
print(sys.path)
执行结果:
['D:\\xuexi\\python', 'D:\\xuexi\\python', 'D:\\python\\python37.zip', 'D:\\python\\DLLs', 'D:\\python\\lib', 'D:\\python', 'D:\\python\\lib\\site-packages', 'D:\\python\\lib\\site-packages\\setuptools-39.1.0-py3.7.egg', 'D:\\python\\lib\\site-packages\\pip-10.0.1-py3.7.egg', 'D:\\pycharm\\PyCharm 2018.2.3\\helpers\\pycharm_matplotlib_backend', 'D:\\SecureCRT']
我们可以看到已经成功将'D:\\SecureCRT'添加到sys.path。
2. 增加.pth文件
在Python安装目录下的site-packages子目录中(如:D:\python\Lib\site-packages),创建一个扩展名为.pth的文件,文件名任意。本次演示在这里创建一个mrpath.pth文件,在该文件中添加要导入模块所在目录,例如:将模块目录D:\SecureCRT添加到mrpath.pth文件,添加后的代码如下:
D:\SecureCRT
注意:创建.pth文件后,需要重新打开要执行的导入模块的Python文件,否则新添加的目录不起作用(只在当前版本中有效)。
3. 在PYTHONPATH环境变量中添加
打开电脑 → 属性 → 高级系统设置 → 环境变量,先查看有没有叫PYTHONPATH的环境变量,如果没有先添加这个名称的环境变量,将要添加的目录D:\SecureCRT放入变量值,点击确定(这样Python也能找到这个目录了)。
注意:在环境变量中添加模块目录后,需要重新打开要执行导入模块的Python文件,否则新添加的目录不起作用(在不同版本的Python中都有效)。

浙公网安备 33010602011771号