• Python之第八章 模块和包 --- 模块


    目录

    Python之第八章 模块和包 --- 模块

    1.模块

    1.定义:

    2.作用:

    3.分类

    4.模块导入的常见方法:五种

    5.使用import导入模块

    6.使用from...import语句导入模块

    7.使用as关键字为导入模块定义别名

    8.自定义模块

            例1 新建一个模块文件,实现素数的判断

            自定义模块的功能测试

    9.模块搜索目录


    Python之第八章 模块和包 --- 模块

    1.模块

    1.定义:

            将实现某一特定功能的代码放置在一个文件中,以便于其他程序进行导入使用,可以避免函数名、变量名的冲突,改文件称为模块,扩展名为.py

            模块 --- 可以将其堪称包含变量或一组方法的Python文件对象,或者多个Python文件对象组成的目录。

    2.作用:

    1. 模块 = 函数+类+变量
    2. 程序规模不断变大需要分为多个文件,以提高维护性
    3. 模块可以重复导入,提高重用性

    3.分类

            内置模块 --- 当前使用,Python内置模块大概有200多个标准模块,如:

    模块名用途
    time时间模块
    urllib读取互联网服务的标准库
    math数学类
    re正则
    sys解释器以及系统相关

            自定义模块 --- 第三方模块

    4.模块导入的常见方法:五种

    1. import 模块名
    2. from 模块名 import 功能名
    3. from 模块名 import * --- 相当于第一种
    4. import 模块名 as 命别名
    5. from 模块名 import 功能名 as 别名

    5.使用import导入模块

            import 模块名

            import 模块名1,模块名2,...,模块名n(导入多个模块)

    1. import math
    2. print(math.sqrt(9))
    3. 结果:
    4. 3.0

    6.使用from...import语句导入模块

            作用 --- 使用import导入模块时,如果只需要部分函数可以通过from语句实现

    注意:

            使用时不需要增加模块名前缀

    1. from math import sqrt, floor
    2. print(sqrt(9), floor(10.88))
    3. 结果:
    4. 3.0 10

    7.使用as关键字为导入模块定义别名

            原因 --- 某种情况下模块名称过长,建议使用as命名一个较为短的新名称,调用时使用新名称进行操作

    1. import time as t
    2. print('hello')
    3. t.sleep(3)
    4. print('world')

    注意:

            使用from..import导入的模块必须保证导入内容名称唯一,若导入的模块有相同的变量、函数、类则会覆盖之前导入的同名内容,因此需要检查,别名应简洁

    8.自定义模块

            作用 --- 将相关的代码写在一个单独的文件中,并命名为 ‘模块’.py --- 自行创建的模块名称不能与标准库中的模块名重名

    例1 新建一个模块文件,实现素数的判断

            1.在当前目录下新建文件prime.py

            2.输入代码后保存退出

    1. def fun_prime(num):
    2.    if num < 2:
    3.        print('输入错误,请输入大于2的整数')
    4.    else:
    5.        for i in range(num):
    6.            if num % 2 == 0:
    7.                return 0
    8.        else:
    9.            return 1
    10. # 找出一百以内的素数
    11. import prime as pe
    12. a = 0
    13. print('一百以内的素数为:')
    14. for i in range(2, 100):
    15.    if pe.fun_prime(i) == 1:
    16.        print(i, end=' ')
    17.        a += 1
    18.    if a == 10:
    19.        print()
    20.        a = 0

    自定义模块的功能测试

            作用 --- 在编写完自定义模块以后,最好在模块中对代码进行提前测试,以防止抛出异常

            模方方法 --- _ _ name _ _ --- 每个模块的定义中都包含一个记录模块名称的字符串变量( _ _ name _ _),随着运行的页面不同,返回不同。

            当前页面执行 --- 返回结果为 _ _ main _ _

    1. print(__name__)
    2. def fun_prime(num):
    3.    '''
    4.   判断输入的数字是否为素数
    5.   :param num: 输入的数字
    6.   :return: 0 表示该数不是素数 1 表示该数为素数
    7.   '''
    8.    if num < 2:
    9.        print('输入错误,请输入大于2的整数')
    10.    else:
    11.        for i in range(num):
    12.            if num % 2 == 0:
    13.                return 0
    14.        else:
    15.            return 1
    16.        
    17. 结果:
    18. _ _main_ _

    在其他文件调用执行 --- 输出模块文件名 --- _ _ 模块名_ _

    1. # 找出一百以内的素数
    2. import prime as pe
    3. a = 0
    4. print('一百以内的素数为:')
    5. for i in range(2, 100):
    6.    if pe.fun_prime(i) == 1:
    7.        print(i, end=' ')
    8.        a += 1
    9.        if a == 10:
    10.            print()
    11.            a = 0
    12. 结果:
    13. prime
    14. 一百以内的素数为:
    15. 3 5 7 9 11 13 15 17 19 21
    16. 23 25 27 29 31 33 35 37 39 41
    17. 43 45 47 49 51 53 55 57 59 61
    18. 63 65 67 69 71 73 75 77 79 81
    19. 83 85 87 89 91 93 95 97 99
    20. Process finished with exit code 0

    结论 --- 模块自行测试如下:

    1. print(__name__)
    2. def fun_prime(num):
    3. '''
    4. 判断输入的数字是否为素数
    5. :param num: 输入的数字
    6. :return: 0 表示该数不是素数 1 表示该数为素数
    7. '''
    8. if num < 2:
    9.     print('输入错误,请输入大于2的整数')
    10. else:
    11.     for i in range(num):
    12.         if num % 2 == 0:
    13.             return 0
    14.     else:
    15.         return 1
    16. # 进行函数测试
    17. if __name__ == '__main__':  # 若果是当前页面执行
    18. if fun_prime(5):
    19.     print('素数')
    20. else:
    21.     print('平数')
    22. #此时不需要其他程序就可以在文本文件中执行测试

    注意:

            _ _ name _ _ --- 一般用于自定义模块测试,还可以用于编写程序的入口:

    1. def main():
    2. #执行的功能
    3. #打印的功能
    4. #增删的功能
    5. #调用
    6. if _ _name_ _ == '_ _main_ _'

    9.模块搜索目录

    当使用import语句导入模块时,默认情况会按照以下情况查找

    1. 执行Python文件的当前目录
    2. Pythonpath(环境变量)
    3. Python解释器安装目录

    通过代码查看 --- sys.path --- 检索目录

    1. import sys
    2. print(sys.path)
    3. 结果:
    4. ['E:\\pythontext', 'E:\\pythontext', 'E:\\pthon\\PyCharm 2020.1\\plugins\\python\\helpers\\pycharm_display', 'E:\\pthon\\python39.zip', 'E:\\pthon\\DLLs', 'E:\\pthon\\lib', 'E:\\pthon', 'E:\\pythontext\\venv', 'E:\\pythontext\\venv\\lib\\site-packages', 'E:\\pthon\\lib\\site-packages', 'E:\\pthon\\PyCharm 2020.1\\plugins\\python\\helpers\\pycharm_matplotlib_backend']

  • 相关阅读:
    探索Manticore Search:开源全文搜索引擎的强大功能
    HBase基本操作及命令示例
    pycharm关于第三方库操作大全
    web前端期末大作业 html+css+javascript化妆品网页设计实例 企业网站制作
    ---图的遍历和最小生成树
    python+django车辆违章信息查询管理系统pycharm项目
    数据库管理-第四十六期 一些...疑惑吧~(20221203)
    【教3妹学算法-每日3题(3)】最低加油次数
    计算机网络:三次握手与四次挥手
    STM32 Bootloader开发记录 3 固件签名校验
  • 原文地址:https://blog.csdn.net/qq_57289939/article/details/127811561