飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 11380|回复: 5

[原创] 在某段代码前后自动执行特定代码之python实现

[复制链接]
匿名
匿名  发表于 2022-10-29 13:05:08 |阅读模式
本帖最后由 匿名 于 2022-10-29 13:08 编辑

                                                                       在某段代码前后自动执行指定代码


[Python] 纯文本查看 复制代码
from contextlib import contextmanager
 
@contextmanager
def test():
    # 在某段代码之前执行的
    print('%d' % 1)
    yield  # 返回并让程序在此暂停
    # 在某段代码之后执行的
    print('%d' % 4)
 
 
# 在这段代码前后自动执行特定代码 需要通过contextmanager装饰器实现 先从contextlib模块中导入contextmanager函数
# 然后用 @contextmanager语法 写在一个函数的上方 函数里面写先执行的代码 然后用yield语句 yield语句后的是后执行的代码
# 使用with语句来实现
with test():
    print('2 hello')
    print('3 world')
 
# 说一下代码执行顺序 with语句首先执行test()函数 会执行yield关键字之前的语句 输出 1
# yield语句返回yield之后的值(这里没有值) 并让程序在此自动暂停 然后执行with语句内部的所有语句 输出 
# hello 
# world
# with下的语句执行完了 再执行yield之后的语句 输出 2



环境:win11系统   Python 3.9.9   vscode编辑器  




@contextmanager通过generator生成器来简化编写上下文管理 函数带yield关键字就是一个generator生成器

本人在吾爱昨天发的帖子

https://www.52pojie.cn/thread-1705160-1-1.html
  • TA的每日心情
    难过
    6 天前
  • 签到天数: 661 天

    [LV.9]以坛为家II

    发表于 2022-10-30 22:38:48 | 显示全部楼层
    过来学习了,多谢
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-5-27 23:24
  • 签到天数: 300 天

    [LV.8]以坛为家I

    发表于 2022-10-30 23:20:00 | 显示全部楼层
    乐活 发表于 2022-10-30 22:38
    过来学习了,多谢

    不用谢 哈哈
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-9-2 13:12
  • 签到天数: 168 天

    [LV.7]常住居民III

    发表于 2022-11-6 20:58:09 | 显示全部楼层
    好文章,前来学习了
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-5-27 23:24
  • 签到天数: 300 天

    [LV.8]以坛为家I

    发表于 2022-11-6 22:01:49 | 显示全部楼层
    linghu 发表于 2022-11-6 20:58
    好文章,前来学习了

    还好 慢慢学吧
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2023-12-15 21:15
  • 签到天数: 32 天

    [LV.5]常住居民I

    发表于 2023-3-6 19:53:55 | 显示全部楼层
    谢谢楼主 支持
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表