一段基本的 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')
  • 执行 BLOCK 中的表达式。

  • 调用上下文管理器的 __exit()__方法。如果 BLOCK 的执行过程中发生了一个异常导致程序退出,那么异常的 type 、 value 和 traceback (即 sys.exc_info()的返回值 )将作为参数传递给__exit()__方法。否则,将传递三个 None 。

references

  • Python 中的with关键字使用详解
  • Python之with语句原理

Python with 结构相关推荐

  1. 以下构成python循环结构的方法中_超星尔雅初级英语口语(持续更新中)选修课答案...

    套期具有"对冲""互抵"的关系 答:正确 差异化战略核心是企业在市场营销.研究和开发.产品技术和工艺设计以及服务等方面具有强大的实力. 答:正确 以下构成Pyt ...

  2. python中常见的流程结构-Python分支结构(switch)操作简介

    Python当中并无switch语句,本文研究的主要是通过字典实现switch语句的功能,具体如下. switch语句用于编写多分支结构的程序,类似与if-.elif-.else语句. switch语 ...

  3. python文本结构化处理_在Python中标记非结构化文本数据

    python文本结构化处理 Labelled data has been a crucial demand for supervised machine learning leading to a n ...

  4. python函数结构_PYTHON 之结构体,全局变量,函数参数,lambda编程 等

    PYTHON 之结构体,全局变量,函数参数,lambda编程 ,generator(yield)使用以及如何自己构建switch结构 *********************** pass pass ...

  5. Python Ctypes结构体指针处理(函数参数,函数返回)

    参考网址: http://www.2cto.com/kf/201109/106444.html 本文演示了在python中调用C语言生成的动态库,返回结构体指针,并进行输出! test.c(动态库源代 ...

  6. 不属于python循环结构的是( )_Python语句print(type(['a','1',2,3]))的输出结果是哪一项?_学小易找答案...

    [简答题]整数的二进制.八进制.十六进制都用什么格式表示?将十进制数转换为二进制.八进制.十六进制的函数是什么? [单选题]Python语言属于以下哪一种语言? [简答题]叙述pass语句的作用. [ ...

  7. Python选择结构注意事项

    以百分制成绩转换为字母等级成绩为例,简单介绍一下Python选择结构需要注意的事项. 1.缩进必须要正确 在Python代码中,缩进是非常重要的.如果缩进不正确,会导致语法错误无法运行,也可能会导致逻 ...

  8. 以下构成python循环结构的方法中正确的是_python教程:python循环结构

    PyQt5是基于Digia公司强大的图形程式框架Qt5的python接口,由一组python模块构成.PyQt5本身拥有超过620个类和6000函数及方法.在可以运行于多个平台. PyQt5拥有双重协 ...

  9. [Python学习笔记][第八章Python异常处理结构与程序调试]

    1/30 第八章Python异常处理结构与程序调试 异常处理 try-except结构 try:try块 except Exception:except块 try-except-else结构 try: ...

  10. 第2章 Python 分支结构

    文章目录 Educoder-第2章 Python 分支结构 第1关:Python单路分支之求平抛小球与抛出点之间的距离 第2关:Python单路分支之正方形判断 第3关:Python双路分支之温度转换 ...

最新文章

  1. Spring Cloud Gateway CORS 方案看这篇就够了
  2. Xamarin XAML语言教程使用Progress属性数据绑定设置进度条进度
  3. 浅析网络流量分析原理:如何把二进制“天书”变成“人话”
  4. 突然决定,送一台笔记本!
  5. 人工机器:深度学习CNN到底实现了什么
  6. 入门机器学习(三)--课后作业解析-线性回归(Python实现)
  7. Bing Maps进阶系列八:在Bing Maps中集成OpenStreetMap地图
  8. 设计模式的C语言应用-适配及系列模式-第六章
  9. html5怎么在画布怎么旋转,javascript – 如何旋转HTML5画布的现有内容?
  10. 微软官方解读 Win11 操作系统
  11. My.Ioc 代码示例——如何使用默认构造参数,以及如何覆盖默认构造参数
  12. Tomcat 系统架构与设计模式之设计模式篇
  13. 目录 1. 管理的门槛 1 1.1. 资历作为一个年龄效应 1 1.2. 高层次知识结构的构建与提升 系统层面及战略层面的问题时 1 2. ,一类是绝对年龄效应,另一类是相对年龄效应。 1 2.1.
  14. 【正点原子MP157连载】 第二十四章 DAC实验-摘自【正点原子】STM32MP1 M4裸机CubeIDE开发指南
  15. Java堆栈的简单图示
  16. 用java编写英寸到厘米的转换_java-将英寸转换为英尺和英寸
  17. 【深圳居住证】2021免费网上快速办理(超详细图文详解)
  18. Banner实现图片轮播
  19. 西安千锋培训python
  20. OneNET麒麟座应用开发之一:初识OneNET麒麟座

热门文章

  1. 使用jqueryMobile + phoneGap 开发移动端应用
  2. PhoneGap跨平台移动应用开发框架体验
  3. Spark的RDD概要DAG概述
  4. php 多级分成手机版,PHP 层级菜单数组处理,由一级数组转换为多级数组的递归实现...
  5. Doris之磁盘空间管理(重点)
  6. safari only css hack,css hack同时针对Safari和Chrome进行攻击
  7. Linux下配置CentOS7网络设置 获取ip地址
  8. c++函数不允许递归_递归优化的这三种方式你知道吗?
  9. 海思3159A运行yolov3(一)——安装caffe(Bug汇总篇)
  10. 图像处理常见算法(C++/OpenCV)