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)

Coba di IDE

Unduh Sumber

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)

Coba di IDE

Unduh Sumber

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")

Coba di IDE

Unduh Sumber

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())

Unduh Sumber

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([]))

Coba di IDE

Unduh Sumber

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 Solusi

Rangkuman

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

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