- Pengenalan Context Managers
- With Statement Dasar
- Protocol __enter__ dan __exit__
- Membuat Context Manager (Class)
- contextlib โ Generator-based
- suppress, redirect_stdout, dan Lainnya
- Nested Context Managers
- Reentrant dan Reusable CM
- Async Context Managers
- Studi Kasus Nyata
- Best Practices
- Quiz Pemahaman
1. Pengenalan Context Managers
Context Manager adalah mekanisme di Python yang memastikan resource (file, koneksi, lock, dll) dikelola dengan benar โ diinisialisasi saat masuk dan dibersihkan saat keluar, bahkan jika terjadi error. Pola ini dikenal sebagai RAII (Resource Acquisition Is Initialization).
Context manager paling sering digunakan melalui with statement, yang menjamin cleanup code selalu dijalankan.
Mengapa Context Manager Penting?
| Keunggulan | Penjelasan |
|---|---|
| Resource Safety | Resource selalu di-release, bahkan saat exception |
| Clean Code | Tidak perlu try/finally secara manual |
| Less Bugs | Mencegah resource leaks (file terbuka, connection bocor) |
| Reusable Pattern | Bisa digunakan untuk berbagai jenis resource |
| Exception Handling | Bisa menangkap, menekan, atau mengubah exception |
| Async Support | Tersedia juga untuk async/await (asyncio) |
Contoh Sederhana: Masalah Tanpa Context Manager
flowchart TD
N0["__exit__(") (exc_type, exc_val, exc_tb")"]
N1["__enter__() return value"]
N2["Body block (normal flow)"]
N1 --> N2
N2 --> N0