当前位置: 首页 > news >正文

Python入门(7):模块

目录

1. 模块的基本概念

2. 导入模块的方式

2.1 基本导入

2.2 导入特定内容

2.3 导入所有内容

2.4 给模块或导入项起别名

3. 模块的搜索路径

4. 标准库模块

5. 包(Package)

6. __name__属性

7. 模块重载

8. 模块文档和帮助

9. 创建可执行模块

10. 第三方模块的安装和使用

11. 模块的缓存

12. 模块的最佳实践


1. 模块的基本概念

模块(Module):一个包含Python代码的.py文件,可以包含函数、类和变量的定义,以及可执行的代码。模块可以被其他程序导入使用,实现代码复用。

# 示例:创建一个名为my_module.py的模块
# my_module.py内容:
def greet(name):
    """打招呼的函数"""
    print(f"Hello, {name}!")

version = "1.0"

2. 导入模块的方式

2.1 基本导入

# 导入整个模块
import my_module  # 导入my_module.py

my_module.greet("Alice")  # 使用模块中的函数
print(my_module.version)  # 使用模块中的变量

2.2 导入特定内容

# 从模块导入特定函数/变量
from my_module import greet, version

greet("Bob")  # 直接使用导入的函数
print(version)  # 直接使用导入的变量

2.3 导入所有内容

# 导入模块中的所有内容(不推荐,可能导致命名冲突)
from my_module import *

greet("Charlie")
print(version)

2.4 给模块或导入项起别名

# 给模块起别名
import my_module as mm

mm.greet("David")

# 给导入项起别名
from my_module import greet as say_hello

say_hello("Eve")

3. 模块的搜索路径

Python解释器按照以下顺序搜索模块

  1. 当前目录

  2. PYTHONPATH环境变量指定的目录

  3. Python安装目录的标准库

  4. 第三方库安装目录(site-packages)

# 查看模块搜索路径
import sys
print(sys.path)  # 打印Python模块搜索路径

4. 标准库模块

Python自带的标准库提供了丰富的模块:

# 数学运算模块
import math
print(math.sqrt(16))  # 4.0

# 随机数模块
import random
print(random.randint(1, 10))  # 生成1-10的随机整数

# 日期时间模块
from datetime import datetime
now = datetime.now()
print(now.strftime("%Y-%m-%d %H:%M:%S"))  # 格式化输出当前时间

5. 包(Package)

:包含多个模块的目录,必须包含一个__init__.py文件(可以为空),用于组织相关模块。

my_package/
    __init__.py
    module1.py
    module2.py
    subpackage/
        __init__.py
        module3.py
# 导入包中的模块
import my_package.module1
from my_package.subpackage import module3

# 从包中导入特定内容
from my_package.module2 import some_function

6. __name__属性

每个模块都有一个__name__属性:

  • 当模块被直接运行时,__name__等于"__main__"

  • 当模块被导入时,__name__等于模块名

# 在my_module.py中添加:
if __name__ == "__main__":
    print("模块被直接运行")
else:
    print("模块被导入")

7. 模块重载

默认情况下,模块只会在第一次导入时执行,可以使用importlib重新加载模块:

import importlib
import my_module

# 修改my_module.py后...
importlib.reload(my_module)  # 重新加载模块

8. 模块文档和帮助

# 查看模块文档字符串
print(math.__doc__)

# 使用help函数查看帮助
help(math.sqrt)

9. 创建可执行模块

# 在模块中添加可执行代码
def main():
    print("这是模块的主程序")

if __name__ == "__main__":
    main()  # 当模块被直接运行时执行

10. 第三方模块的安装和使用

# 使用pip安装第三方模块
# 命令行执行: pip install requests

# 使用第三方模块
import requests
response = requests.get("https://www.example.com")
print(response.status_code)  # 200

11. 模块的缓存

Python会缓存导入的模块,存储在__pycache__目录中,以.pyc为扩展名,提高后续导入速度。

12. 模块的最佳实践

  1. 模块命名应简短、全小写,必要时使用下划线

  2. 每个模块应有文档字符串说明其功能

  3. 避免循环导入

  4. 在模块中合理使用if __name__ == "__main__":

  5. 将相关功能组织在同一个包中

如果您觉得本文章对您有帮助,别忘了点赞、收藏加关注,更多干货内容将持续发布,您的支持就是作者更新最大的动力。本专栏将持续更新,有任何问题都可以在评论区讨论

http://www.dtcms.com/a/109687.html

相关文章:

  • 事件处理程序
  • 主题(topic)中使用键(key)来区分同一主题下的多个数据实例
  • 风云可测:华为AI天气大模型将暴雨预测误差缩至3公里内
  • ctfshow VIP题目限免 前台JS绕过
  • Oracle中的UNION原理
  • 【7】数据结构的队列篇章
  • 在Vue中如何高效管理组件状态
  • Swift 继承
  • Java 大数据在智能安防入侵检测系统中的多源数据融合与分析技术(171)
  • FreeRtos简介
  • LLM架构解析:词嵌入模型 Word Embeddings(第二部分)—— 从基础原理到实践应用的深度探索
  • vscode 使用ssh进行远程开发 (remote-ssh)
  • 【2】搭建k8s集群系列(二进制)之安装etcd数据库集群
  • MySQL学习笔记集--DML
  • 【北京化工大学】 神经网络与深度学习 实验6 MATAR图像分类
  • JeecgBoot AI 应用开发平台,AIGC 功能介绍
  • MCP服务器搜索引擎有哪些?MCP资源网站推荐
  • IdeaVim-AceJump
  • 【Mysql】之存储引擎详解
  • 【UVM学习笔记】更加灵活的UVM—通信
  • oracle asm 相关命令和查询视图
  • 本地部署爆款传输神器 FastSend 并实现外部访问
  • 智能巡检机器人在化工企业的应用研究
  • 针对 Python 3.7.0,以下是 Selenium 版本的兼容性建议和安装步骤
  • MTK-GMS版本国内WIFI受限问题
  • Fatal error compiling: 无效的目标发行版: 17 -> [Help 1]的解决方法
  • c++ (通用引用)和(左值引用)区别
  • 自适应信号处理任务(过滤,预测,重建,分类)
  • MAUI开发第一个app的需求解析:登录+版本更新,用于喂给AI
  • qRegisterMetaType函数使用