python基础——模块【模块的介绍,模块的导入,自定义模块,*和__all__,__name__和__main__】

本文详细介绍了Python中的模块概念,包括模块的导入方法(直接导入、导入特定功能、设置别名)、自定义模块的创建与使用,以及如何通过`__all__`和`__main__`避免测试代码在导入时被执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

📝前言:
这篇文章主要讲解一下python基础中的关于模块的导入:
1,模块的介绍
2,模块的导入方式
3,自定义模块

🎬个人简介:努力学习ing
📋个人专栏:C语言入门基础以及python入门基础
🎀CSDN主页 愚润求学
🌄每日鸡汤:路漫漫其修远兮,吾将上下而求索

一,模块的介绍

1,什么是模块
在 Python 中,模块是一种组织 Python 代码的方法。模块可以包含定义(例如类、函数和变量)和可执行代码。如果当我们要使用的功能在模块中时,我们就可以导入模块,使用模块中的相应功能。也就是说:模块可以帮助你将代码组织得更有逻辑,并允许你将代码划分为更小的、更可管理的部分。
例如,我们想实现一些与时间相关的功能,我们就可以直接导入python中现有的time模块,然后调用time模块的功能帮我们实现。

二,模块的导入和使用

模块的导入一般写在文件的开头(这一点和C语言中,要包含对应的头文件类似,要写在开头)
导入方式汇总:
在这里插入图片描述
下面我们介绍几种基本的导入方式:

1,直接导入模块(得到模块)

直接导入模块后,我们就可以用模块里面的全部功能

(1)导入

语法:

import 模块名
# 或者一次性导入多个:
import 模块名, 模块名

示例,导入time模块

import time  # 导入time模块

(2)使用

当我们只导入了模块,没有具体到功能名的时候,在使用时,我们需要通过模块来找功能
语法:

模块名.功能

示例(导入time模块,并且使用里面的sleep功能):

import time  # 导入time模块
time.sleep(10)  # 通过 . 操作符使用功能

sleep的作用就是:让程序暂停运行n

2,从模块中导入功能(得到功能)

(1)导入

语法:

from time import sleep # 导入time模块的sleep功能

示例:

from time import sleep # 导入time模块的sleep功能

(2)使用

这时候,我们已经得到了功能,就无须通过模块来找到功能了,示例:

from time import sleep  # 导入time模块的sleep功能
sleep(10)  # 直接使用功能

(注意:这时候我们只能使用sleep功能,而不能使用time模块里面的其他功能,因为我们只指定导入了这个功能)

3,设置别名

当然,正如本文的第一张图片,我们可以在导入以后,对模块或者是功能进行别名设置:

from time import sleep as al  # 导入time模块的sleep功能,给sleep设置别名:sl
al(10)  # 通过别名al来使用sleep功能

三,自定义模块

1,如何自定义模块

自定义模块其实就是创建一个以.py结尾的python文件,然后我们可以在这个文件里面写功能
(注意:自定义模块的命名要符合标识符的命名规则)
当我们需要调用这个文件里面的功能时,只需要导入这个模块就可以(模块名就是文件名)
例如,我们创建一个自定义模块:
在这里插入图片描述
使用它:

import test  # 导入我们的自定义模块
test.ptint1()  # 使用里面的功能

输出:
在这里插入图片描述

2,同名功能的选择

注意:当导入多个不同的模块,但模块内有同名功能,当调用这个同名功能时,调用的是后面导入的模块的功能
如:
我们在test1test2模块里面写入同名功能:
在这里插入图片描述
在这里插入图片描述
运行下面代码:

from test1 import my_ptint
from test2 import my_ptint
my_ptint()

输出:
在这里插入图片描述

3,* 和__all__

* 导入:
在Python中,使用 from module_name import * 表示导入模块中的所有内容。
这会导入模块中的所有变量、函数和类,我们可以在当前命名空间中直接使用它们。
(注意:这种方法可以快速地导入模块中的所有内容,但可能导致命名冲突,因此通常不推荐使用)
__all__:
__all__ 是模块中的一个特殊变量,它定义了模块中应该被导入的内容。
当使用 from module_name import * 时,只有 __all__ 指定的内容会被导入。(换句话说,__all__ 限制了 * 导入的行为)

示例:
在这里插入图片描述
在这里插入图片描述
这时候我们使用my_print3就会报错,因为__all__变量限制了*的导入

4,模块中的测试代码

假如我们在文件里面写好功能以后,想测试一下这些功能,如:
在这里插入图片描述
输出结果是正常的,并且我们不打算删除这些测试代码。
但是,当我们在别的文件里面,对刚刚的模块进行导包:

from test1 import my_print1
my_print1()

输出结果:
在这里插入图片描述
可见:在我们导包的时候,测试语句也被输出了
这是因为:
我们from 模块的时候,其实是相当于把模块文件执行了
若模块里面有测试代码,则在我们调用的时候,也会运行这些测试代码(就如上面输出的前三行)

为了解决这个问题我们可以使用__name__变量和__main__变量:

在Python中,__main__ 是一个特殊的模块,它主要用于执行模块中的main()函数。当你直接运行一个Python文件时,这个文件中的代码会进入__main__模块。换句话说,__main__模块是Python解释器直接运行的入口
在Python中,一个模块的__name__属性会自动设置为’__main__',如果你直接运行一个模块,你可以通过这个属性来判断当前的模块是否是__main__模块。
例如,下面的代码:

if __name__ == '__main__':
    print("这是一个直接运行的模块")

当我们运行这条代码所写在的文件的时候:__name__就会直接被设置成__main__
当我们运行别的文件的时候,__name__是不会被设置成__main__的

利用这个特性,我们就可以在这个条件判断语句内写入测试语句,从而达到:
在运行模块的时候,能够进入测试语句,
但是在别的文件中导入模块,运行别的文件的时候,测试语句就不会被运行

例如:
在测试文件test1
在这里插入图片描述
(注意右上角:运行的是当前文件)
输出:
在这里插入图片描述
在其他文件中:
在这里插入图片描述
输出:
在这里插入图片描述
这时候就不会再输出测试语句了


🌈我的分享也就到此结束啦🌈
要是我的分享也能对你的学习起到帮助,那简直是太酷啦!
若有不足,还请大家多多指正,我们一起学习交流!
📢公主,王子:点赞👍→收藏⭐→关注🔍
感谢大家的观看和支持!祝大家都能得偿所愿,天天开心!!!

### 测试 SU-03T 语音识别模块方法 为了测试 SU-03T 语音识别模块的功能,可以通过以下方法验证其基本性能定制功能。以下是详细的测试流程: #### 1. **硬件连接** 确保按照标准的接线方式进行连接。通常情况下,SU-03T 可通过 USB-TTL 模块与电脑通信[^3]。具体连接方式如下: | 接口名称 | SU-03T 引脚号 | USB-TTL 对应引脚 | |----------|---------------|-------------------| | VCC | PIN5 (B7) | 5V | | RX | PIN6 (B6) | TX | | TX | | RX | | GND | GND | GND | 完成上述连接后,确认供电正常并打开串口调试工具。 --- #### 2. **软件环境准备** 使用串口调试工具(如 SecureCRT 或者更简单的工具如 XCOM),设置波特率为默认值 `9600` bps,并选择对应的 COM 端口号。如果不确定端口号,可以在设备管理器中查看新增加的虚拟串口设备。 --- #### 3. **基础功能测试** 发送 AT 命令来检测模块是否工作正常。例如输入以下命令以获取版本信息: ```plaintext AT+VERSION? ``` 如果返回类似于 `"SU-03T_V1.x"` 的字符串,则表明模块已成功初始化[^2]。 还可以尝试其他常用命令,比如查询当前状态或配置参数: ```plaintext AT+STATUS? // 查询模块运行状态 AT+CLEARALL // 清除所有自定义词条 ``` --- #### 4. **唤醒词及响应测试** 根据文档说明,预先设定好唤醒词及其触发后的反馈动作。例如,默认唤醒词可能是 “你好”,当说出此词语时,模块会播放预设提示音或者回传特定数据包给主机表示已被激活[^1]。 在实际操作过程中,对着麦克风清晰地说出指定唤醒短语,观察是否有预期反应发生;如果没有听到任何声音回应,请检查音频输入增益调整是否适当以及线路接触状况良好与否。 --- #### 5. **命令词匹配实验** 除了单纯的唤醒之外,还需要检验不同指令能否被正确认知执行。这一步骤涉及加载多个固定表达式到内部存储区里供后续调用。利用配套提供的图形界面应用程序导入所需条目文件(.bin),再重新上电启动即可生效。 随后逐一朗读这些项目列表中的每一项内容看它们对应的结果表现如何——应该能够立即得到相应的答复或者是物理行为改变(像灯光亮灭之类的效果展示)。 --- #### 示例代码片段:Python 实现自动化测试框架 下面给出一段基于 PySerial 库编写的简单程序用来连续向目标装置发出询问请求直到获得满意答案为止。 ```python import serial import time def test_su03t(port='COM3', baudrate=9600, timeout=1): ser = serial.Serial(port, baudrate, timeout=timeout) if not ser.is_open: raise Exception("Failed to open port") commands = ["AT+VERSION?", "AT+STATUS?", "AT+CLEARALL"] responses = [] try: for cmd in commands: ser.write((cmd + '\r\n').encode()) time.sleep(0.5) response = ser.read_all().decode('utf-8') responses.append(response.strip()) finally: ser.close() return responses if __name__ == "__main__": results = test_su03t() for result in results: print(result) ``` --- #### 注意事项 在整个试验期间需要注意保护敏感元件免受静电损害风险影响;另外也要留意电源电压范围必须严格遵循官方推荐规格以免造成永久损坏情况出现。 ---
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

愚润泽

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

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

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

打赏作者

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

抵扣说明:

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

余额充值