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。这些参数在异常处理中相当有用。我们来改一下代码,看看具体如何工作的。

相关文章

  • 浅析Django中关于session的使用

    浅析Django中关于session的使用

    这篇文章主要介绍了Django下关于session的使用,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-12-12
  • Python图像处理之对比两张图片的差异示例

    Python图像处理之对比两张图片的差异示例

    这篇文章主要给大家介绍了关于Python图像处理之对比两张图片的差异,Python提供了一些库和工具可以用于图片的相似度比对,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-09-09
  • 用Python实现一个简单的抽奖小程序

    用Python实现一个简单的抽奖小程序

    最近开始学习python相关知识,看最近有不少随机抽奖小程序,自己也做一个试试,下面这篇文章主要给大家介绍了关于如何利用Python实现一个简单的抽奖小程序的相关资料,需要的朋友可以参考下
    2023-05-05
  • Python selenium模块的安装和配置教程

    Python selenium模块的安装和配置教程

    这篇文章主要为大家介绍了python中selenium模块的安装和配置环境变量教程、提取数据操作、无头模式,有需要的朋友可以借鉴参考下,希望能够对大家有所帮助
    2022-10-10
  • Pycharm 2020年最新激活码(亲测有效)

    Pycharm 2020年最新激活码(亲测有效)

    本文给大家分享Pycharm 2020年最新激活码,亲测试过可以放心使用,感兴趣的朋友快来吧
    2020-01-01
  • python实现求纯色彩图像的边框

    python实现求纯色彩图像的边框

    这篇文章主要为大家详细介绍了python实现求纯色彩图像的边框,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-04-04
  • Python base64和hashlib模块及用法详解

    Python base64和hashlib模块及用法详解

    这篇文章主要介绍了Python base64和hashlib模块,本文通过实例代码介绍了base64和hashlib模块的相关知识,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-02-02
  • python要安装在哪个盘

    python要安装在哪个盘

    在本篇文章里小编给大家分享的是一篇关于python必须装在c盘吗的知识点文章,有兴趣的朋友们可以学习下。
    2020-06-06
  • Python OpenGL绘制一场烟花盛会

    Python OpenGL绘制一场烟花盛会

    正值新春佳节,小编今天为大家带来了用Python OpenGL绘制的一场烟花盛会,文中的实现步骤讲解详细,感兴趣的小伙伴可以跟随小编一起动手试一试
    2022-02-02
  • Python中eval()函数的功能及使用方法小结

    Python中eval()函数的功能及使用方法小结

    python中eval(str)函数很强大,官方解释为:将字符串str当成有效的表达式来求值并返回计算结果,所以,结合math当成一个计算器很好用
    2023-05-05

最新评论