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

python中执行前置操作,后置操作的几种方法

目录

  • 1. 上下文管理器(Context Manager)
  • 2. 装饰器(Decorator)
  • 3. 使用 contextlib 模块
  • 4. 使用 atexit 模块(全局后置操作)
  • 5. try-finally 语句

Python 中的前置和后置操作简化写法有以下几种。

1. 上下文管理器(Context Manager)

使用 with 语句和上下文管理器是最常见的方式:

class MyContextManager:def __enter__(self):# 前置操作print("前置操作执行")return self  # 返回值赋给 as 后的变量def __exit__(self, exc_type, exc_val, exc_tb):# 后置操作print("后置操作执行")# 返回 True 可以抑制异常# 使用方式
with MyContextManager() as cm:print("主要操作")

2. 装饰器(Decorator)

装饰器可以在函数执行前后添加操作:

def my_decorator(func):def wrapper(*args, **kwargs):# 前置操作print("前置操作执行")result = func(*args, **kwargs)# 后置操作print("后置操作执行")return resultreturn wrapper# 使用方式:
@my_decorator
def my_function():print("主要操作")

3. 使用 contextlib 模块

更简洁的上下文管理器创建方式:

from contextlib import contextmanager@contextmanager
def my_context():# 前置操作print("前置操作执行")try:yield  # 这里会执行 with 块中的代码finally:# 后置操作print("后置操作执行")# 使用方式:
with my_context():print("主要操作")

4. 使用 atexit 模块(全局后置操作)

import atexit# 注册程序退出时执行的函数
def cleanup():print("程序结束时执行")atexit.register(cleanup)

5. try-finally 语句

try:# 前置操作print("前置操作执行")# 主要操作print("主要操作")finally:# 后置操作print("后置操作执行")

上下文管理器是最推荐的方式,它既简洁又符合 Python 的设计理念。

http://www.lryc.cn/news/581229.html

相关文章:

  • 【QT】事件(鼠标、按键、定时器、窗口)
  • JVM的位置和JVM的结构体系
  • Java创建型模式---工厂模式
  • PVE DDNS IPV6
  • 基于Elasticsearch的短视频平台个性化推荐系统设计与实现
  • SwiftUI 7(iOS 26)中玻璃化工具栏的艺术
  • 介绍electron
  • 基于spark的奥运会奖牌变化数据分析
  • 国产 OFD 标准公文软件数科 OFD 阅读器:OFD/PDF 双格式支持,公务办公必备
  • day44打卡
  • cmd 的sftp传输;Conda出现环境问题: error: invalid value for --gpu-architecture (-arch)
  • 浅度解读-(未完成版)浅层神经网络-多个隐层神经元
  • 前端-CSS-day1
  • 【openp2p】学习3:【专利分析】一种基于混合网络的自适应切换方法、装 置、设备及介质
  • WSL命令
  • 【爬虫】逆向爬虫初体验之爬取音乐
  • 大模型算法面试笔记——Bert
  • 计算机网络(网页显示过程,TCP三次握手,HTTP1.0,1.1,2.0,3.0,JWT cookie)
  • 一键将 SQL 转为 Java 实体类,全面支持 MySQL / PostgreSQL / Oracle!
  • 永磁同步电机无速度算法--基于锁频环前馈锁相环的滑模观测器
  • 使用SSH隧道连接远程主机
  • 五、Python新特性指定类型用法
  • 【赵渝强老师】Oracle RMAN的目录数据库
  • 数据库-元数据表
  • 事务的原子性
  • 自建双因素认证器 2FAuth 完美替代 Google Auth / Microsoft Auth
  • CSS 文字浮雕效果:巧用 text-shadow 实现 3D 立体文字
  • 虚拟机与容器技术详解:VM、LXC、LXD与Docker
  • HarmonyOS学习3---ArkUI
  • 《Redis》哨兵模式