当前位置: 首页 > 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.xdnf.cn/news/1143739.html

相关文章:

  • Java Web项目Dump文件分析指南
  • LLM(Large Language Model)大规模语言模型浅析
  • 在 Jenkins 中使用 SSH 部署密钥
  • 游戏盾能否保护业务免受DDoS攻击吗?
  • C语言基础:数组练习题
  • 服务器内存满了怎么清理缓存?
  • 【C++】——类和对象(中)——默认成员函数
  • 前端基础——B/S工作原理、服务器与前端三大件
  • 【Docker】在Linux环境下使用Dockerfile打包镜像(图文示例)
  • 完整的 Meteor NPM 集成
  • 6 种无线传输照片从安卓到 Mac 的方法
  • UDP 协议下一发一收通信程序的实现与解析
  • 防爆手机是什么?能用普通手机改装吗?
  • 免费PDF文件格式转换工具
  • FastAdmin框架超级管理员密码重置与常规admin安全机制解析-卓伊凡|大东家
  • python学智能算法(二十三)|SVM-几何距离
  • react控制react Popover组件显示隐藏
  • 【怜渠客】简单实现手机云控Windows电脑锁屏
  • 力扣面试150(33/150)
  • pytest + requests 接口自动化测试框架
  • UE 一些基础的python
  • AE MDX L6 L12 L18 电源手侧操作使用说明
  • 在git中同时配置gitcode和github访问权限
  • 40.限流规则
  • 【世纪龙科技】汽车故障诊断与排除仿真教学软件让课堂更高效安全
  • openinstall九周年:聚焦安全防御,护航业务持续增长
  • 注册表单案例
  • 低空感知技术
  • 服务端高并发方案设计
  • python学智能算法(二十四)|SVM-最优化几何距离的理解