Python with 结构
2024-08-24 20:17:04
一段基本的 with 表达式,其结构是这样的:
with EXPR as VAR:
BLOCK
EXPR 可以是任意表达式; as VAR 是可选的。其一般的执行过程是这样的:
- 计算
EXPR
,并获取一个上下文管理器。 - 上下文管理器(上下文管理器,实现了
__exit__/__enter()__/__exit()__
方法的类的实例化对象)的__exit()__
方法被保存起来用于之后的调用。 - 调用上下文管理器的
__enter()__
方法。 如果
with
表达式包含as VAR
,那么EXPR
的返回值被赋值给VAR
。- 如果后续用到 EXPR 的返回值,则后要跟 as 以将其返回值保存下来
- with open() as f:
- 如果后续用不到 EXPR 的返回值,仅仅提供一个运行的上下文环境,则后不必跟 as:
graph = tf.Graph()
with graph.as_default():
x = tf.Variable(5, name='x')- 如果后续用到 EXPR 的返回值,则后要跟 as 以将其返回值保存下来
执行
BLOCK
中的表达式。- 调用上下文管理器的
__exit()__
方法。如果 BLOCK 的执行过程中发生了一个异常导致程序退出,那么异常的 type 、 value 和 traceback (即 sys.exc_info()的返回值 )将作为参数传递给__exit()__
方法。否则,将传递三个 None 。
references
最新文章
- [Phalcon] DI默认的服务
- php 提示Warning: mysql_fetch_array() expects
- ZTE AD3812 3G模块在linux 2.6.34 内核的开发板上的支持方法
- Maven模块聚合与继承
- 个人对现在大众对perl的偏见的一些见解
- HttpClient研究学习总结
- PowerDesigner连接MySQL和逆向工程图
- React 记录(3)
- [C#]关于DataDirectory的一些思考
- Mock2 moco框架的http协议get方法Mock的实现
- vs 基本验证控件使用
- Python自动化开发 - 堡垒机实例
- Hessian学习(springboot环境)
- pyinstaller打包pyqt文件(转)
- 1、pandas使用sort_values排序
- 接口自动化(unittest)
- Cordova - Windows 下创建第一个 Android App
- pandas1
- 【UOJ#79】一般图最大匹配(带花树)
- Laravel 5.4 migrate时报错: Specified key was too long error