您的位置:首页 > 编程语言 > Python开发

python学习之with...as语句

2017-09-29 17:15 302 查看

python中的with...as...语句类似于try...finally...语句:

# -*- coding: utf-8 -*-
#
"""
with...as...语句
"""
#try...finally...语句
f = open('data.txt')
try:
data = f.read()
print(data)
finally:
f.close()
#with...as...语句
with open('data.txt') as f:
data = f.read()
print(data)
hello,leo!

hello,leo!

[Finished in 0.1s]

从上面可以看出,with...as语句看起来更为简洁。

 

原理

1.表达式执行并返回一个对象A

2.对象A调用__enter__()

3.__enter__()将返回对象B赋值给变量C

4.等表达式全部执行完毕,对象A调用__exit__()方法

下面来看一个例子:

# -*- coding: utf-8 -*-
#
"""
with...as...语句
"""
class Example:
def __enter__(self):
print('In__enter__()')
return "Over!"
def __exit__(self,*args):
print('In__exit__()')
return "Exit!"
def get_example():
return Example()

with get_example() as example:
print(example)

 结果:

In__enter__()
Over!
In__exit__()
[Finished in 0.1s]

分析:

1.表达式get_example()执行并返回对象Example()

2.对象Example()调用__enter__()方法

3.__enter__()方法将返回对象"Over!"赋值给变量example

4.对象Example()调用__exit__()方法

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: