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种方式中都没有找到需要导入的模块就会出现报错):

  1. 在当前目录(即执行的Python脚本文件所在目录)下查找。
  2. 在PYTHONPATH(环境变量)下的每个目录中查找。
  3. 到Python的默认安装目录下查找。

以上各个目录的具体位置保存在标准模块syssys.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中都有效)。

posted @ 2018-10-02 20:15  每一天,为明天。  阅读(89)  评论(0)    收藏  举报