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

AI(day10)模块化编程概念(模块、包、导入)及常见系统模块总结和第三方模块管理

核心概念

模块

  • 本质:一个包含 Python 代码的 .py 文件
  • 作用:组织相关功能(函数、类、变量)
  • 示例:math.py(包含数学函数)、utils.py(自定义工具)

  • 本质:包含 __init__.py 文件的特殊目录
  • 作用:组织相关模块,形成层次结构
  • 示例:
my_package/__init__.pymodule1.pymodule2.pysubpackage/__init__.pymodule3.py

导入机制

  • import module: 导入整个模块 → import math → math.sqrt(4)
  • from module import name: 导入特定对象 → from math import sqrt → sqrt(4)
  • import module as alias: 设置别名 → import numpy as np → np.array()

关键实践技巧

1.导入优化

# 推荐
import numpy as np
from matplotlib import pyplot as plt# 避免(导致命名空间污染)
from math import *

from math import *会导致命名空间污染,因为它无选择地将math模块中所有的公开名字都引入当前命名空间,可能会覆盖已有名字,也会引入大量可能不需要的名字。因此,在编写正式代码时,应该避免使用这种导入方式,而使用显式导入。
示例:

   pi = 3.14   # 自定义的pifrom math import *   # 会导入math.pi,覆盖自定义的piprint(pi)   # 输出3.141592653589793,而不是3.14

2.__init__.py__all__妙用

    1. __init__.py的作用
    • 当导入包(import package)或使用from package import something时,会执行__init__.py文件。
    • __init__.py中导入的内容会成为包级别的属性。
    1. __all__的作用
    • 当使用from package import *时,__all__变量定义了哪些名称会被导入。
    • 如果没有定义__all__,则不会导入任何名称(除了那些在__init__.py中显式导入的,且非以下划线开头的名称)。

示例:如何通过__init__.py简化导入路径
假设我们有如下包结构:

mypackage/__init__.pymodule1.pymodule2.py

其中,module1.py内容:

def func1():print("Function 1 from module1")class Class1:passdef _True():pass

module2.py内容:

def func2():print("Function 2 from module2")class Class2:pass
  • 情况1:不使用__init__.py简化导入

用户需要这样导入:

from mypackage.module1 import func1, Class1
from mypackage.module2 import func2, Class2
  • 情况2:在__init__.py中简化导入

mypackage/__init__.py中:

from .module1 import *
from .module2 import *
# 定义__all__,这样使用 from mypackage import * 时,会导入这四个名称
__all__ = ['func1','Class1','func2','Class2','_True','_true'
]def _true():print("_ture")

这样,用户就可以直接这样导入:

from mypackage import func1, Class1, func2, Class2

或者使用 * 导入(因为我们在__all__中定义了)

from mypackage import *
func1()   # 直接使用func1,而不需要写mypackage.module1.func1
_True()	  # 用__all__定义也不能使用,下划线开头属于module1.py私有属性
_true()	  # _true()定义在__init__.py内部,用__all__定义也能使用

常用系统模块速查表

模块名主要功能典型用法示例
os操作系统交互os.listdir(), os.path.join()
sysPython解释器交互sys.argv, sys.exit()
math数学运算math.sin(), math.pi
datetime日期时间处理datetime.now(), timedelta
jsonJSON数据编码/解码json.loads(), json.dump()
re正则表达式操作re.search(), re.findall()
random生成随机数random.randint(), random.choice()
urllib.request网络请求urllib.request.urlopen()
collections扩展数据类型deque, namedtuple, Counter
argparse命令行参数解析创建命令行工具必备

第三方模块管理

1.pip - 包安装工具

# 安装包
pip install requests numpy pandas# 安装特定版本
pip install Django==3.2.18# 升级包
pip install --upgrade pandas# 卸载包
pip uninstall package-name

2.虚拟环境(必备实践)

  • 作用:隔离项目依赖,防止版本冲突

  • 创建与激活:

# 创建
python -m venv myenv# 激活 (Windows)
myenv\Scripts\activate# 激活 (macOS/Linux)
source myenv/bin/activate

3.依赖管理

  • 生成依赖清单:
pip freeze > requirements.txt
  • 安装项目所有依赖:
pip install -r requirements.txt
http://www.lryc.cn/news/592458.html

相关文章:

  • 全球天气预报5天(经纬度版)免费API接口教程
  • JavaScript进阶篇——第九章 异常、this 与性能优化全解(终)
  • Agentic AI引领人力资源新范式:易路的技术进化与行业实践
  • Proto文件从入门到精通——现代分布式系统通信的基石(含实战案例)
  • IDEA插件离线安装
  • 手撕Spring底层系列之:Bean的生命周期
  • Diffusion-VLA 中的 Reasoning Token 注入机制解析:语言推理如何控制扩散模型?
  • 51c视觉~合集13
  • 第三章-提示词-初级:一文带你入门提示词工程,开启AI高效交互之旅(11/36)
  • ARCS系统机器视觉实战(直播回放)
  • TapData 出席 2025 MongoDB 用户大会新加坡站,分享构建实时统一数据平台最佳实践
  • Vue3 中使用 Element Plus 实现自定义按钮的 ElNotification 提示框
  • Django母婴商城项目实践(五)
  • Java 大视界 -- Java 大数据在智能医疗电子健康档案数据挖掘与健康服务创新中的应用(350)
  • Elasticsearch+Logstash+Filebeat+Kibana部署(单机部署)
  • 策略模式+工厂模式(案例实践易懂版)
  • 30、鸿蒙Harmony Next开发:应用文件上传下载,压缩与解压
  • Jfinal+SQLite处理 sqlite数据库执行FIND_IN_SET报错
  • docker--Dockerfile
  • LP-MSPM0G3507学习--04GPIO控制
  • docker--程序自启动
  • 融合优势:SIP 广播对讲联动华为会议 全场景沟通响应提速​
  • http与https的主要区别是什么?
  • openpyxl 流式读取xlsx文件(read_only=true)读不到sheet页中所有行
  • Git语义化提交规范及提交模板设置
  • sqli-labs靶场通关笔记:第27-28a关 union、select过滤
  • 网络安全:使用.NET 检测网络下载文件及其来源
  • pdf格式怎么提取其中一部分张页?
  • 文档处理控件TX Text Control系列教程:使用 C# .NET 将二维码添加到 PDF 文档
  • 从Hyperliquid到AILiquid:一场从极致性能到策略智能的迭代