try
try:
print("start")
raise KeyError
except KeyError as e:
print("key error")
except IndexError:
print("IndexError error,精确捕捉异常")
except:
print("other error,异常了,但是以上都没有精确捕捉到")
print("谨慎使用")
else:
print("no error,没有异常会运行")
finally:
print("有没有异常,都会运行")
"""
补充:
如果try 里有return语句
无论如何 都会返回finally中的return
如果finally没有,就根绝正常的执行逻辑去返回。
"""
上下文管理器
import time
class Sample():
def __enter__(self):
print("enter")
return self
def __exit__(self,exc_type,exc_val,exc_tb):
print("exit")
def do_something(self):
print("do something")
with Sample() as sample:
time.sleep(1)
sample.do_something()
contextlib上下文管理器
import contextlib
import time
@contextlib.contextmanager
def file_open(file_name):
print("打开文件")
"""
一个生成器
yield之前, 相当于 __enter__
"""
yield { }
print("关闭文件")
"""
yield 之后,相当于__exit__
"""
with file_open("1235.mp4") as sample:
time.sleep(1)
print("do someting")