Python中的with...as用法介绍

 更新时间:2015年05月28日 17:41:02   投稿:junjie  
这篇文章主要介绍了Python中的with...as用法介绍,本文直接给出用法实例,需要的朋友可以参考下

这个语法是用来代替传统的try...finally语法的。

复制代码 代码如下:

with EXPRESSION [ as VARIABLE] WITH-BLOCK

基本思想是with所求值的对象必须有一个__enter__()方法,一个__exit__()方法。

紧跟with后面的语句被求值后,返回对象的__enter__()方法被调用,这个方法的返回值将被赋值给as后面的变量。当with后面的代码块全部被执行完之后,将调用前面返回对象的__exit__()方法。

复制代码 代码如下:

file = open("/tmp/foo.txt")
try:
    data = file.read()
finally:
    file.close()

使用with...as...的方式替换,修改后的代码是:
复制代码 代码如下:

with open("/tmp/foo.txt") as file:
    data = file.read()
#!/usr/bin/env python
# with_example01.py
 
 
class Sample:
    def __enter__(self):
        print "In __enter__()"
        return "Foo"
 
    def __exit__(self, type, value, trace):
        print "In __exit__()"
 
 
def get_sample():
    return Sample()
 
 
with get_sample() as sample:
    print "sample:", sample

执行结果为
复制代码 代码如下:

In __enter__()
sample: Foo
In __exit__()

1. __enter__()方法被执行
2. __enter__()方法返回的值 - 这个例子中是"Foo",赋值给变量'sample'
3. 执行代码块,打印变量"sample"的值为 "Foo"
4. __exit__()方法被调用with真正强大之处是它可以处理异常。可能你已经注意到Sample类的__exit__方法有三个参数- val, type 和 trace。这些参数在异常处理中相当有用。我们来改一下代码,看看具体如何工作的。

相关文章

  • python实现双人版坦克大战游戏

    python实现双人版坦克大战游戏

    这篇文章主要为大家详细介绍了python实现双人版坦克大战游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • Django+Vue实现文件上传下载的项目实践

    Django+Vue实现文件上传下载的项目实践

    本文主要介绍了Django+Vue实现文件上传下载的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • 一篇文章彻底搞懂Python类属性和方法的调用

    一篇文章彻底搞懂Python类属性和方法的调用

    对python 调用类属性的方法详解测试时候类的调用是经常会用到的,下面这篇文章主要给大家介绍了关于Python类属性和方法的调用的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • python基于win32api实现键盘输入

    python基于win32api实现键盘输入

    这篇文章主要介绍了python基于win32api实现键盘输入,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2020-12-12
  • python 自动识别并连接串口的实现

    python 自动识别并连接串口的实现

    这篇文章主要介绍了python 自动识别并连接串口的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • Python subprocess模块功能与常见用法实例详解

    Python subprocess模块功能与常见用法实例详解

    这篇文章主要介绍了Python subprocess模块功能与常见用法,结合实例形式详细分析了subprocess模块功能、常用函数相关使用技巧,需要的朋友可以参考下
    2018-06-06
  • Python编写电话薄实现增删改查功能

    Python编写电话薄实现增删改查功能

    这篇文章主要为大家详细介绍了Python编写电话薄实现增删改查功能的相关资料,感兴趣的朋友可以参考一下
    2016-05-05
  • 使用OpenCV对运动员的姿势进行检测功能实现

    使用OpenCV对运动员的姿势进行检测功能实现

    2022年奥林匹克运动会如期举行,以不正确的方式进行运动风险在增加,人体姿势估计是计算机视觉领域的重要问题,接下来通过本文给大家介绍下使用OpenCV对运动员的姿势进行检测功能,感兴趣的朋友一起看看吧
    2022-02-02
  • python 如何在list中找Topk的数值和索引

    python 如何在list中找Topk的数值和索引

    这篇文章主要介绍了python 如何在list中找Topk的数值和索引的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05
  • 举例详解Python中的split()函数的使用方法

    举例详解Python中的split()函数的使用方法

    这篇文章主要介绍了举例详解Python中的split()函数的使用方法,split()函数的使用是Python学习当中的基础知识,通常用于将字符串切片并转换为列表,需要的朋友可以参考下
    2015-04-04

最新评论