Anonymous 发表于 2022-10-29 13:05:08

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

本帖最后由 匿名 于 2022-10-29 13:08 编辑

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


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编辑器


https://attach.52pojie.cn/forum/202210/28/184343gaid2cd02tfgi10c.png

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

本人在吾爱昨天发的帖子

https://www.52pojie.cn/thread-1705160-1-1.html

乐活 发表于 2022-10-30 22:38:48

过来学习了,多谢

心妍 发表于 2022-10-30 23:20:00

乐活 发表于 2022-10-30 22:38
过来学习了,多谢

不用谢 哈哈

linghu 发表于 2022-11-6 20:58:09

好文章,前来学习了

心妍 发表于 2022-11-6 22:01:49

linghu 发表于 2022-11-6 20:58
好文章,前来学习了

还好 慢慢学吧

456231 发表于 2023-3-6 19:53:55

谢谢楼主 支持
页: [1]
查看完整版本: 在某段代码前后自动执行特定代码之python实现