好友
阅读权限30
听众
最后登录1970-1-1
|
甜萝
发表于 2022-10-28 18:45
本帖最后由 paypojie 于 2022-10-28 18:55 编辑
在某段代码前后自动执行指定代码
[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生成器 |
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|