在某段代码前后自动执行特定代码之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
过来学习了,多谢
不用谢 哈哈
好文章,前来学习了 linghu 发表于 2022-11-6 20:58
好文章,前来学习了
还好 慢慢学吧
谢谢楼主 支持
页:
[1]