python语法刻意练习系列17天:9.else与with语句
with语句详解
通常而言我们在对一个文件中进行操作时经常要写出下列代码
fp = open('t1.txt', 'w')
fp.write('ilovepython')
fp.close()
因为代码量少的缘故所以看出出来什么,但是万一中间的对文件操作很是复杂,很有可能忘记书写close方法,将文件关闭,而这一行为会导致系统内存负担加重。为了避免这一情况:我们经常书写如下语句:
with open('t1.txt', 'w') as fp:
fp.write('ilovepython')
这样在执行完fp.write(‘ilovepython’)这一语句后,文件将会自动关闭。好了那么下面引用另一篇文章中的例子来进行说明(python中with的用法)
with语句是如何工作的
借用其他人的说法:
紧跟with后面的语句被求值后,返回对象的 enter() 方法被调用,这个方法的返回值将被赋值给as后面的变量。当with后面的代码块全部被执行完之后,将调用前面返回对象的 exit()方法。
下面例子可以具体说明with如何工作:
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__()
else语句
常用于以下几个部分
- if-else语句
- while-else语句
- for-else语句
- 异常处理与try块搭配使用的else块