Code Pythonic memanfaatkan bentuk bahasa yang cocok untuk masalahnya dan tetap mudah dijelaskan. Ukurannya tidak sekadar jumlah baris: loop yang jelas sering lebih berguna daripada ekspresi pendek yang sulit dipahami.
Tujuan Penggunaan
Gunakan lampiran ini saat meninjau code yang sudah bekerja. Kamu akan membandingkan cara penulisan, memeriksa kesetaraan hasil, dan memilih perubahan yang benar-benar memudahkan pembacaan.
Persiapan
Pelajari perulangan, fungsi, koleksi, dan file pada Bab 9 serta Bab 11-14. Contoh file dijalankan di komputer. Contoh lainnya dapat dicoba melalui IDE.
Panduan dan Contoh
Loop dan comprehension
Comprehension cocok untuk pemetaan atau penyaringan sederhana. Jika setiap item memerlukan banyak langkah, gunakan loop biasa. Sebelum mengganti bentuk code, pastikan hasil dan penanganan kasus tepinya tetap sesuai.
Contoh L03-01 – Dua cara membentuk kuadrat bilangan genap
angka = [1, 2, 3, 4, 5, 6]
hasil_loop = []
for nilai in angka:
if nilai % 2 == 0:
hasil_loop.append(nilai * nilai)
hasil_ringkas = [nilai * nilai for nilai in angka if nilai % 2 == 0]
print(hasil_loop)
print(hasil_ringkas)
print(hasil_loop == hasil_ringkas)
Hasil yang diharapkan:
[4, 16, 36]
[4, 16, 36]
True
Penjelasan: Kedua bentuk memakai data dan kondisi yang sama. Perbandingan hasil membantu memastikan perubahan tidak mengubah tujuan.
Coba ubah: Ganti angka dengan list kosong dan bandingkan hasilnya.
Iterasi, unpacking, dan penggabungan teks
Telusuri item langsung jika tidak memerlukan posisi. Gunakan
enumerate() jika posisi juga dibutuhkan.
join() menyatakan maksud menggabungkan sekumpulan string
dengan pemisah tertentu.
Contoh L03-02 – Nomor daftar dan pertukaran nilai
buah = ["apel", "pisang", "jeruk"]
for nomor, nama in enumerate(buah, start=1):
print(f"{nomor}. {nama}")
print(", ".join(buah))
koordinat = (10, 20)
x, y = koordinat
print(x, y)
a, b = 5, 10
a, b = b, a
print(a, b)
Hasil yang diharapkan:
1. apel
2. pisang
3. jeruk
apel, pisang, jeruk
10 20
10 5
Penjelasan: Unpacking memberi nama pada bagian data. Pertukaran a dan b dilakukan sekali dari keadaan awal yang jelas.
Coba ubah: Ubah nomor awal menjadi 0 dan tambahkan satu buah.
Truthiness dan nilai default
if daftar: memeriksa apakah koleksi berisi. Namun
if nilai: juga bernilai salah untuk angka nol. Bila nol
adalah data sah dan hanya None berarti belum tersedia,
gunakan nilai is None.
dict.get() mengembalikan nilai default hanya ketika
kunci tidak ada. Kunci yang ada dengan nilai None tetap
menghasilkan None.
Contoh L03-03 – Membedakan kosong, nol, dan None
nilai = 0
if nilai is None:
print("Nilai belum tersedia")
else:
print(f"Nilai: {nilai}")
profil = {"nama": "Rina", "kota": None}
print(profil.get("pekerjaan", "Belum diisi"))
print(profil.get("kota", "Belum diisi"))
tugas = []
if not tugas:
print("Belum ada tugas")
Hasil yang diharapkan:
Nilai: 0
Belum diisi
None
Belum ada tugas
Penjelasan: Pemeriksaan eksplisit menjaga nilai nol. Default pada get() tidak mengganti nilai None yang sudah tersimpan.
Coba ubah: Hapus kunci kota dan perhatikan perubahan hasil get().
Mengelola file dengan with
with mengatur penutupan file, termasuk saat bloknya
mengalami exception. Bentuk try/finally tetap sah ketika
kamu perlu mengelola sumber daya secara manual. Gunakan encoding yang
jelas untuk file teks.
Contoh L03-04 – Menulis dan membaca catatan
from pathlib import Path
lokasi = Path("catatan_pythonic.txt")
with lokasi.open("w", encoding="utf-8") as berkas:
berkas.write("Belajar sedikit setiap hari.\n")
with lokasi.open(encoding="utf-8") as berkas:
print(berkas.read().strip())
Hasil yang diharapkan:
Belajar sedikit setiap hari.
Penjelasan: File dibuat pada folder kerja saat program dijalankan. Mode w mengganti isi file bernama sama pada percobaan berikutnya.
Coba ubah: Ubah kalimat yang ditulis, lalu jalankan dari folder latihan.
Studi kasus: merapikan perhitungan total
Gunakan dua fungsi dengan data uji yang sama. sum()
menerima generator expression sehingga subtotal tidak perlu disimpan
dalam list tambahan. Pilih bentuk yang lebih mudah dijelaskan oleh
pembaca proyekmu.
Contoh L03-05 – Memeriksa refactor dengan hasil yang sama
def total_loop(barang):
total = 0
for item in barang:
total += item["harga"] * item["jumlah"]
return total
def total_ringkas(barang):
return sum(item["harga"] * item["jumlah"] for item in barang)
barang = [
{"harga": 12000, "jumlah": 2},
{"harga": 5000, "jumlah": 3},
]
print(total_loop(barang))
print(total_ringkas(barang))
print(total_loop(barang) == total_ringkas(barang))
print(total_ringkas([]))
Hasil yang diharapkan:
39000
39000
True
0
Penjelasan: Kedua fungsi menghitung tujuan yang sama. Data kosong memeriksa satu kasus tepi; pengujian tambahan tetap diperlukan untuk masukan lain.
Coba ubah: Tambahkan barang dengan jumlah 0 dan bandingkan kembali kedua fungsi.
Zen of Python dan istilah Pythonista
Tim Peters menulis The Zen of Python, yang berisi 19
aforisme. Kamu dapat membacanya melalui PEP 20 atau menjalankan
python -c "import this" di terminal. Inti yang berguna
untuk praktik di sini: utamakan keterbacaan, jelaskan maksud, jangan
menyembunyikan error tanpa alasan, dan hindari kerumitan yang tidak
membantu.
Prinsip-prinsip itu menjadi bahan pertimbangan, bukan aturan bahwa semua loop harus diganti atau semua fungsi harus satu baris. Ukur kejelasan dengan mencoba menjelaskan code dan memeriksa perilakunya.
Pythonista merupakan sebutan informal bagi orang yang memakai dan menyukai Python. Tidak ada sertifikasi atau daftar alat yang wajib dimiliki. Kebiasaan membaca dokumentasi, menguji perubahan, menerima masukan, dan berbagi penjelasan lebih berguna daripada mengejar label.
Untuk proyek yang membesar, pelajari alat secara bertahap: venv dan pip untuk lingkungan, formatter/linter untuk bantuan penyuntingan, pengujian untuk perilaku, dan Git untuk riwayat perubahan. Notebook membantu eksplorasi data; lihat Lampiran 7 ketika membutuhkannya.
Praktik Mandiri
L03-P01 – Bandingkan dua penyaringan
Buat list baru yang memuat nilai minimal 75 dari [60, 80, 75, 90]. Tulis dengan loop dan comprehension, lalu bandingkan. Ulangi dengan list kosong.
Kriteria selesai: Kedua bentuk menghasilkan [80, 75, 90]; list kosong menghasilkan [].
Lihat Petunjuk
Gunakan kondisi nilai >= 75 pada kedua bentuk dan jangan mengubah list masukan.
Lihat Solusi
Kesetaraan hasil dan keterbacaan menjadi dasar memilih bentuk code.
nilai = [60, 80, 75, 90]
hasil_loop = []
for angka in nilai:
if angka >= 75:
hasil_loop.append(angka)
hasil_ringkas = [angka for angka in nilai if angka >= 75]
print(hasil_loop)
print(hasil_ringkas)
print(hasil_loop == hasil_ringkas)
print([angka for angka in [] if angka >= 75])
Coba Solusi di IDEUnduh SolusiRangkuman
Pilih bentuk yang cocok dengan tujuan. Periksa hasil sebelum dan
sesudah refactor, bedakan None dari nilai falsy lain, serta
gunakan pengelolaan sumber daya yang jelas. Ringkas boleh; maksud
program harus tetap terbaca.
Referensi dan Materi Pendamping
- PEP 20: The Zen of Python
- Python: teknik perulangan
- Python: truth value testing
- Python: input dan output file
- Pendamping Bab 12
- Pendamping Bab 13
Edisi September 2026. Contoh dan nomor praktik sesuai dengan buku.
FAQ | Lampiran 1 | Lampiran 2 | Lampiran 3 | Lampiran 4 | Lampiran 5 | Lampiran 6 | Lampiran 7
