1. Context manager
Context manager : là một đối tượng chịu trách nhiệm đóng resource khi resource ấy không cần dùng nữa.
Khi sử dụng context manager, người dùng (developer) sẽ chỉ cần khai báo và sử dụng resource, không cần lo phải đóng nó lại.
file là một ví dụ, bình thường khi dùng file, ta sẽ phải mở - dùng - đóng. Từ phiên bản python2.5 trở đi, file đã được implement để trở thành 1 context manager. Khi dùng nó với câu lệnh with, ta không cần đóng nó nữa:
>>> with open("/etc/hosts") as f:
... f.read()
...
'127.0.0.1\tlappy\n::1\t\tlappy ip6-localhost ip6-loopback\nfe00::0\t\tip6-localnet\nff00::0\t\tip6-mcastprefix\nff02::1\t\tip6-allnodes\nff02::2\t\tip6-allrouters\n\n'
>>> f.read()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: I/O operation on closed file
>>>