contextlib- with语句节省代码量

  1. from contextlib import contextmanager
  2. @contextmanager
  3. def make_open_context(filename, mode):
  4. fp = open(filename, mode)
  5. try:
  6. yield fp
  7. finally:
  8. fp.close()
  9. with make_open_context('/tmp/a.txt', 'a') as file_obj:
  10. file_obj.write("hello carson666")
  1. # _*_ coding:utf-8 _*_
  2. from contextlib import contextmanager
  3. """
  4. contextmanager给了我们一个机会,即将原来不是上下文管理器的类变成了一个
  5. 上下文管理器,例如这里的MyResource类
  6. """
  7. class MyResource:
  8. def query(self):
  9. print("query data")
  10. @contextmanager
  11. def make_myresource():
  12. print("connect to resource")
  13. yield MyResource()
  14. print("connect to resource")
  15. with make_myresource() as r:
  16. r.query()

image.png

案例3
image.png
image.png

模块functools

(36条消息) python functools 使用详解_寻寻觅觅oO的博客-CSDN博客_functools