Python学习(十三)什么是模块、模块的引入、自定义模块、常见的内置模块(math、random、os、sys、uuid、时间模块、加密模块)

在介绍常用的模块用法前,我们先来回顾一下模块的内容,以及如何使用模块?

一、什么是模块?

1.1 定义

在 Python 中,将实现莫伊特定功能的代码放置在文件中,以便其它程序进行导入使用,这种方式可以避免函数名或变量名的冲突,这种文件称为 模块(Modules),格式为 扩展名.py

  • 模块 = 函数 + 类 + 变量

打开 python 的安装包,可以看到 Lib 文件夹下全是模块。

1.2 分类

在 Python 中,模块分为 内置模块自定义模块 两种。

  • 内置模块:目前 Python 内置模块大概在 200 多个,如:
模块名 描述
sys 与 Python 解释器及其环境操作相关的标准库。
time 提供与时间相关的各种函数的标准库。
os 提供了访问操作系统服务功能的标准库。
calendar 提供与日期相关的各种函数的标准库。
urllib 用于读取来自网上(服务器上)的数据的标准库。
json 用于使用 JSON 序列化和反序列化对象。
re 用于在字符串中执行正则表达式匹配和替换。
math 提供算数运算函数的标准库。
decimal 用于进行精确控制运算精度、有效位数和四舍五入操作的十进制运算。
shutil 用于进行高级文件操作,如复制、移动和重命名等。
logging 提供了灵活的记录事件、错误、警告和调试信息等日志信息的功能。
tkinter 使用 Python 进行 GUI 编程的标准库。
  • 自定义模块:来自第三方提供的模块。

1.3 五种模块引入的方法

  • import 模块名
  • from 模块名 import 功能名
  • from 模块名 import *
  • import 模块名 as 别名
  • from 模块名 import 功能名 as 别名

(导入多个模块或功能时,用英文逗号分隔)

1)import 模块名(全部引入)

这是最基本的导入方式,它将整个模块导入到当前命名空间中。

  • 格式:import 模块名

  • 使用方法:模块名.功能名()

  • 特点:

    1. 导入整个模块
    2. 需要使用模块名作为前缀来访问模块中的功能(如函数、类等)。
    3. 可以避免命名冲突,因为所有引用都明确指出是哪个模块的功能。
  • 使用示例:

import math
print(math.sqrt(9)) # 求平方根
2)from 模块名 import 功能名(部分引入)

这种方式只导入模块中的特定功能(如函数、类等),而不是整个模块。

  • 格式:from 模块名 import 功能名
  • 使用方法:功能名()
  • 特点:
    1. 只导入指定的功能,减少了内存占用。
    2. 不需要使用模块名作为前缀,直接调用功能名称即可。
    3. 如果导入多个功能,可以使用英文逗号分隔。
  • 使用示例:
from math import sqrt, pow
print(sqrt(9)) # 求平方根
3)from 模块名 import *(引入公共功能)【不推荐】

这种方式会导入模块中的所有公共功能(即没有以下划线 _ 开头的功能)。

  • 格式:*from 模块名 import
  • 使用方法:功能名()
  • 特点:
    1. 导入模块中的所有公共功能。
    2. 不需要使用模块名作为前缀,直接调用功能名称即可。
  • 使用示例:
from math import *

print(sqrt(16)) # 计算16的平方根
print(pow(2, 3)) # 计算2的3次方

注意: 这种方式可能会导致 命名冲突,因为它会将所有导出的功能引入当前命名空间。因此,通常不推荐在大型项目或生产环境中使用。

4)import 模块名 as 别名(设置模块别名)

这种方式允许为导入的模块指定一个别名,方便在代码中使用更短的名字来引用模块。

  • 特点:
    1. 给模块起一个简短的别名,便于频繁使用时减少输入量。
    2. 特别适合于长模块名的情况,如 pandas 常用 pd 作为别名。
    3. 仍然需要使用别名作为前缀来访问模块中的功能。
  • 使用示例:
import numpy as np

array = np.array([1, 2, 3])
print(array) # 输出:[1, 2, 3]

注意: 设置别名后,不能再使用原有的模块名。

5)from 模块名 import 功能名 as 别名(设置功能别名)

这种方式允许为导入的功能指定一个别名,方便在代码中使用更短的名字来引用该功能。

  • 特点:
    1. 给某个具体的功能起一个别名,便于在代码种使用。
    2. 不需要使用模块名作为前缀,直接调用别名即可。
    3. 适用于当功能名较长或容易与其它名称冲突时。
  • 使用示例:
from datetime import datetime as dt

print(dt.now()) # 输出当前时间

注意: 设置别名后,不能再使用原有的功能名。

1.4 模块的搜索目录

当使用 import 语句导入模块时,默认情况下会按照如下顺序进行模块查找:

  1. 执行 python 文件的当前项目目录;
  2. 环境变量 PYTHONPATH
  3. python 解释器安装目录。

当我们不确定有哪些目录的时候,我们可以 sys.path 查看全量的目录。如下所示:

>>> import sys
>>> sys.path
['', 'C:\\Users\\lenovo\\AppData\\Local\\Programs\\Python\\Python310\\python310.zip', 'C:\\Users\\lenovo\\AppData\\Local\\Programs\\Python\\Python310\\DLLs', 'C:\\Users\\lenovo\\AppData\\Local\\Programs\\Python\\Python310\\lib', 'C:\\Users\\lenovo\\AppData\\Local\\Programs\\Python\\Python310', 'C:\\Users\\lenovo\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages']

1.5 如何自定义模块

自定义模块的作用:

将相关的代码编写在一个独立的文件中,并命名为 “模块名.py”,这样就可以导入到程序中使用。

注意:自行创建的模块名不能与 Python 自带的标准库中的模块名重名。

举个例子:

  • 创建一个模块文件 prime.py,实现素数判断,代码如下:
def fun_prime(num):
    if num < 2:
        print('请输入大于2的正整数')
    else:
        for i in range(2, num):
            if num % i == 0:
                return 0
        else:
        	return 1

新建一个 python 文件导入上述模块,实现 100 以内的素数判断输出。代码如下:

import prime

for i in range(2, 100):
    if prime.fun_prime(i) == 1:
        print(i, end=' ')

执行结果如下:

2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 

自定义模块中的功能测试:

  • 作用:编写完自定义模块后,最好在模块内部对代码进行测试,以防出现问题。
  • 魔法方法: __name__,每个模块中都会有一个字符串变量,记录模块名称,随着运行页面的不同,返回值结果也不相同。
  • 当前页面执行:返回值为 __main__
# 功能函数
def fun_prime(num):
    if num < 2:
        print('请输入大于2的正整数')
    else:
        for i in range(2, num):
            if num % i == 0:
                return 0
            else:
                return 1

# 测试代码
if __name__ == '__main__':
    if fun_prime(5) == 1:
        print('程序正常')
    else:
        print(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不愿放下技术的小赵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值