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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2298745.html

(0)
上一篇 2025年2月28日 04:04:14
下一篇 2025年2月22日 21:17:05

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Python中super关键字用法实例分析

    本文实例讲述了python中super关键字用法。分享给大家供大家参考。具体分析如下: 在Python类的方法(method)中,要调用父类的某个方法,在Python 2.2以前,通常的写法如代码段1: 代码段1: class A:def …

    编程技术 2025年2月28日
    200
  • python关键字and和or用法实例

    python 中的%ignore_a_1%从左到右计算表达式,若所有值均为真,则返回最后一个值,若存在假,返回第一个假值。 or也是从左到有计算表达式,返回第一个为真的值。 复制代码 代码如下:IDLE 1.2.4>>>&…

    编程技术 2025年2月28日
    200
  • python简单实现旋转图片的方法

    本文实例讲述了python简单实现旋转图片的方法。分享给大家供大家参考。具体实现方法如下: # rotate an image counter-clockwise using the PIL image library# free from…

    编程技术 2025年2月28日
    200
  • Python运算符重载用法实例

    本文实例讲述了python运算符重载用法。分享给大家供大家参考。具体分析如下: python中,我们在定义类的时候,可以通过实现一些函数来实现重载运算符。 例子如下: # -*- coding:utf-8 -*- ””’ Created…

    编程技术 2025年2月28日
    200
  • Python实现控制台输入密码的方法

    本文实例讲述了python实现控制台输入密码的方法。分享给大家供大家参考。具体如下: 1. raw_input() : pwd = raw_input(‘password: ‘)print pwd# password: aaa# aaa 登…

    编程技术 2025年2月28日
    200
  • Python中的super用法详解

    一、问题的发现与提出 在Python类的方法(method)中,要调用父类的某个方法,在Python 2.2以前,通常的写法如代码段1: 代码段1: 复制代码 代码如下: class A:  def __init__(self):   pr…

    编程技术 2025年2月28日
    200
  • Python读写ini文件的方法

    本文实例讲述了python读写ini文件的方法。分享给大家供大家参考。具体如下: 比如有一个文件update.ini,里面有这些内容: [ZIP]EngineVersion=0DATVersion=5127FileName=dat-5127…

    编程技术 2025年2月28日
    200
  • Python实现统计单词出现的个数

    最近在看python脚本语言,脚本语言是一种解释性的语言,不需要编译,可以直接用,由解释器来负责解释。python语言很强大,而且写起来很简洁。下面的一个例子就是用python统计单词出现的个数。 import sysimport stri…

    编程技术 2025年2月28日
    200
  • Python创建模块及模块导入的方法

    本文实例讲述了python创建模块及模块导入的方法。分享给大家供大家参考。具体分析如下: python学习手册中写道: 定义模块,只要使用文本编辑器,把一些python代码输入到文本中,然后以.py为后缀名进行保存,任何此类文件都会被认为是…

    编程技术 2025年2月28日
    200
  • Python下载懒人图库JavaScript特效

    这是一个简单的python脚本,主要从懒人图库下载javascript特效模板,在脚本中使用了gevent这个第三方库,使用的时候需要先安装。 #!/usr/bin/python# -*- coding: utf-8 -*- import …

    编程技术 2025年2月28日
    200

发表回复

登录后才能评论