Perbedaan Krusial Antara Python 2 dan Python 3

Transisi dari Python 2 ke Python 3 merupakan salah satu perubahan signifikan dalam sejarah bahasa pemrograman Python. Meskipun Python 2 (terutama versi 2.7) telah mencapai akhir masa dukungannya (End-Of-Life/EOL) pada Januari 2020, pemahaman mengenai perbedaannya tetap vital, terutama saat bekerja dengan kode warisan (legacy code) atau sistem lama. Python 3 menawarkan banyak peningkatan, perbaikan konsistensi, dan penghapusan fitur-fitur yang membingungkan di versi sebelumnya.

Diagram perbandingan visual antara Python 2 dan Python 3 PYTHON 2 print "Hello" Raw Input PYTHON 3 print("Hello") Input Function Migrasi

1. Perubahan Fundamental pada Fungsi `print`

Ini adalah perbedaan yang paling sering ditemui oleh pemula. Di Python 2, `print` adalah sebuah statement (pernyataan), sedangkan di Python 3, ia diubah menjadi sebuah function (fungsi).

Python 2: print "Halo Dunia"
Python 3: print("Halo Dunia")

Perubahan ini membuat sintaks menjadi lebih konsisten dan memungkinkan fleksibilitas yang lebih besar dalam mengarahkan output, seperti menambahkan argumen sep atau end.

2. Penanganan String dan Unicode

Salah satu perbaikan terbesar di Python 3 adalah cara ia menangani teks (string) dan data biner (bytes). Python 3 memisahkan secara ketat antara teks (Unicode) dan data biner.

3. Pembagian Bilangan (Integer Division)

Cara operator pembagian (/) bekerja juga mengalami perubahan signifikan yang mempengaruhi perhitungan matematis.

# Python 2: Hasilnya selalu integer jika kedua operand integer >>> 5 / 2 # Output: 2 # Python 3: Hasilnya selalu float (pembagian sesungguhnya) >>> 5 / 2 # Output: 2.5

Jika di Python 3 Anda tetap ingin mendapatkan hasil pembagian integer seperti di Python 2, Anda harus menggunakan operator pembagian floor (//): 5 // 2 menghasilkan 2.

4. Fungsi `range()` dan Perilaku Iterasi

Di Python 2, fungsi range() mengembalikan sebuah list penuh di memori, yang bisa sangat boros memori untuk rentang angka yang sangat besar. Fungsi xrange() digunakan untuk iterasi yang efisien.

Di Python 3, fungsi range() yang lama telah dirombak total dan kini berperilaku seperti xrange() di Python 2. Ia mengembalikan objek iterator (range object) yang menghasilkan angka sesuai permintaan tanpa memuat seluruh urutan ke dalam memori.

5. Penanganan Exception

Sintaks untuk menangkap pengecualian (exception) juga diperbarui untuk meningkatkan keterbacaan.

# Python 2 try: risiko_kode() except IOError, e: print e # Python 3 try: risiko_kode() except IOError as e: print(e)

Tabel Ringkasan Perbedaan Utama

Fitur Python 2.x Python 3.x
Fungsi Print Statement (print "a") Fungsi (print("a"))
Pembagian Integer 5 / 2 menghasilkan 2 5 / 2 menghasilkan 2.5
Default String Byte (ASCII) Unicode (str)
Range Besar range() mengembalikan List range() mengembalikan Iterator
Exception Catching except E, var except E as var
Perbandingan Dictionary Metode .keys() mengembalikan List Metode .keys() mengembalikan View Object

Kesimpulan: Mengapa Beralih ke Python 3?

Meskipun proses migrasi memerlukan penyesuaian sintaks, Python 3 menawarkan fondasi yang jauh lebih bersih, aman, dan modern. Peningkatan dalam penanganan Unicode menghilangkan banyak masalah internasionalisasi, sementara peningkatan kinerja dan konsistensi sintaks membuat pengembangan lebih mudah dikelola dalam jangka panjang. Semua pustaka utama dan komunitas telah sepenuhnya berfokus pada Python 3, menjadikannya standar industri saat ini untuk semua proyek baru.

Bagi developer yang masih menghadapi kode Python 2, disarankan untuk menggunakan alat migrasi seperti 2to3 jika memungkinkan, atau merencanakan pembaruan bertahap untuk memastikan kompatibilitas di masa depan.