Latihan 1 dari materi Context Managers di Python — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.
Editor sudah berisi from contextlib import contextmanager, fungsi Tag(nama) yang badannya masih pass, dan dua blok with bertumpuk di bawahnya: with Tag("html"):, di dalamnya with Tag("body"):, di dalamnya print("Halo dunia"). Biarkan baris import dan kedua blok with itu.
- Tulis
@contextmanager tepat di atas def Tag(nama):.
- Ganti komentar dan
pass dengan tiga baris: cetak tag pembuka "<" + nama + ">", lalu yield, lalu cetak tag penutup "</" + nama + ">".
- Klik Jalankan.
Output-nya harus persis lima baris ini, urutannya dari yang dibuka terakhir ditutup duluan:
<html>
<body>
Halo dunia
</body>
</html>
Yang diperiksa: kelima baris itu ada di output, dan kodenya memakai yield (atau __exit__) serta @contextmanager (atau __enter__). Versi class dengan __enter__ dan __exit__ juga lolos. Simulator latihan menjalankan with pada fungsi yang masih pass tanpa error dan cuma mencetak Halo dunia; Python asli berhenti dengan TypeError: 'NoneType' object does not support the context manager protocol.