|
发表于 2022-9-22 17:57:26
|
显示全部楼层
给你准备了两个示例文件。
第一个文件mod.py,假设是你自定义的模块,代码如下:- import sys
- class MyClass:
- """自定义MyClass类,主要实现两个魔法方法__enter__和__exit__"""
- def __enter__(self):
- """进入with语句块时自动调用这个__enter__方法"""
- print('进入with语句块')
- print('我自己的业务逻辑代码, balabala...')
- return self # 返回值根据需要自行设置
- def __exit__(self, exc_type, exc_value, exc_tb):
- """离开with语句块时自动调用这个__exit__方法。
- 注意它的几个参数:
- exc_type: 异常类型,如果with语句块内发生了异常,异常的类型会被自动传入
- exc_value: 异常值,如果with语句块内部发生了异常,异常的值会被自动传入
- exc_tb: 异常调用栈,如果with语句块内发生了异常,调用栈信息会被自动传入
- 如果没有异常则这三个参数的值都是None
- """
- print('业务逻辑处理完毕')
- print('离开with语句块')
- sys.modules[__name__] = MyClass()
复制代码
第二个文件main.py,用于导入自定义的模块,代码如下- import mod
- with mod as m:
- print('hi')
复制代码
运行main.py,结果为:- 进入with语句块
- 我自己的业务逻辑代码, balabala...
- hi
- 业务逻辑处理完毕
- 离开with语句块
复制代码 |
|