for
仅当for循环运行完毕时,才运行else块。
while
仅当while循环因为条件为假值而退出时,才运行else块
try
仅当try块没有异常抛出时才允许else块
with语句:简化try,finally模式,这种模式用于保证一段代码运行完毕后执行某项操作,即使那段代码由于异常,return语句或sys.exit()调用中止
也会执行指定的操作。finally子句的代码通常用于释放重要的资源,或者还原临时变更的状态。
with语句开始运行时,会在上下文管理器对象调用__enter__方法。
with语句运行结束后,会在上下文管理器对象调用__exit__方法
from mirror import LookingGlass with LookingGlass() as what: #上下文管理器LookingGlass();Python在上下文管理器上调用__enter__方法,把返回结果绑定在what上 print('Alice,Kitty and Snowdrop') print(what)
class LookingGlass: def __enter__(self): import sys self.original_write=sys.stdout.write#存入实例属性,供后面使用 sys.stdout.write=self.reverse_write#给sys.stdout.wirte打猴子补丁 return 'JABBERWOCKY' def reverse_write(self,text): self.original_write(text[::-1])#反转内容 def __exit__(self,exc_type,exc_value,traceback): import sys sys.stdout.wirte=self.original_write if exc_type is ZeroDivisionError: print('Please DO NOT divide by zero!') return True