Kesalahan Dasar Saat Menulis Script Python

June 7, 2019, 1:52 p.m.   afifai   Trik Python  


Kesalahan pada saat menulis scipt Python tentunya mengakibatkan program yang kita tulis tidak berjalan dengan semestinya, baik itu berjalan namun hasilnya tidak sesuai dengan ekspektasi User, atau bahkan script tidak berjalan sama sekali (eror). Pesan eror yang muncul seringkali dapat membantu, namun tidak jarang juga pesan error yang muncul tidak memberikan clue apapun.

Berikut merupakan kesalahan dasar saat menulis script Python beserta cara bagaimana kita memperbaiki eror tersebut.

1. Konsistensi Penggunaan Tab atau Spasi untuk Indentation

Kesalahan ini sering saya temui pada programmer Python pemula, biasanya kesalahan ini juga diakibatkan oleh IDE yang digunakan. Yaitu mencampur penggunaan tab dan spasi untuk indentation , sebagai contoh pada potongan program berikut:

daftar_angka = [3, 5, 2, 7, 9]
for x in daftar_angka:
    kuadrat = x ** 2
    print(kuadrat)

Apabila potongan program diatas kita jalankan, maka kita akan mendapatkan eror sebagai berikut :

File "tes.py", line 4
    print(kuadrat)
                 ^
IndentationError: unindent does not match any outer indentation level

Pesan eror diatas mungkin tidak terlalu membantu karena kesalahan tertunjuk kepada akhir baris ke-4, yang sebenarnya permasalahan ada pada indentation yang tidak sesuai (misalkan barid ke-3 menggunakan tab dan baris ke-4 menggunakan spasi) yang apabila dilihat secara kasat mata terlihat sejajar, padahal sejajar saja tidak cukup, tetapi harus sama persis diantara pilihan penggunaan tab atau penggunaan spasi.

Untuk mengatasi hal tersebut, solusinya tentu saja kita harus cek penggunaan tab / spasi secara konsisten. Namun menurut aturan PEP-8, disarankan kita menggunakan 4 spasi untuk satu level indentation.

Namun bagaimana apabila kita sudah terlanjur menulis hingga beberapa ratus baris program dan tentunya akan sangat mustahil untuk dicek satu persatu ? Cara yang paling mudah adalah dengan mengatur IDE yang digunakan, sebagai contoh apabila anda menggunakan Sublime Text kita bisa mengatur settings dari menu Preferences -> Settings lalu ubah potongan kode dibawah ini:

"translate_tabs_to_spaces": true,

Maka secara otomatis, sublime akan menkonversikan satu tab menjadi 4 spasi tanpa harus diubah secara manual.

2. Nama File Sama dengan Library yang di Import

Kesalahan ini juga sering saya temukan pada programmer pemula, biasanya orang yang baru belajar mengenai module dan package pada Python. Yaitu menamai script yang ditulis dengan nama library yang di import. Sebagai contoh, misal saya membuat script dengan nama math.py dengan isi sebagai berikut:

from math import sqrt

angka = eval(input('masukkan angka : '))
hasil_akar = sqrt(angka)
print(hasil_akar)

apabila saya jalankan file math.py maka akan keluar eror sebagai berikut :

Traceback (most recent call last):
  File "math.py", line 1, in <module>
    from math import sqrt
  File "math.py", line 1, in <module>
    from math import sqrt
ImportError: cannot import name sqrt

Pesan eror diatas cukup sulit dimengerti oleh pemula, namun eror tersebut sebenarnya dapat diartikan bahwa Python tidak menemukan fungsi sqrt pada file math.py. Walaupun modul math ada dalam Python itu sendiri, namun Python akan mencari fungsi yang di import dari hirarki yang paling dekat yaitu nama file itu sendiri.

Secara singkat, kita tidak disarankan menamai nama file dengan nama library yang kita import, sehingga solusinya adalah mengubah nama math.py menjadi nama lainnya, misal hitung.py

3. Nama Variabel Sama dengan Nama Fungsi yang di Import

Kesalahan ini hampir sama dengan kesalahan sebelumnya, yang membedakan adalah masalahnya ada pada nama variabel yang didefinisikan. Sebenarnya eror ini cukup mudah dideteksi, namun yang menjadi masalah adalah pesan eror yang lagi-lagi tidak intuitif. Misalkan saya menulis program hitung.py berikut :

from math import sqrt

sqrt = sqrt(9)
print(sqrt)

sqrt25 = sqrt(25)
print(sqrt)

Apabila program hitung.py kita jalankan, maka outputnya adalah sebagai berikut :

3.0
Traceback (most recent call last):
  File "hitung.py", line 6, in <module>
    sqrt25 = sqrt(25)
TypeError: 'float' object is not callable

pada penghitungan sqrt pertama yaitu akar dari 9, program dapat mengeksekusinya dengan baik, namun pada penghitungan kedua mulai ada conflict dikarenakan sqrt sudah berubah menjadi variabel, bukan lagi fungsi yang di import dari math.

Solusinya adalah, hindari penamaan variabel yang sama dengan fungsi yang di import.

Kira-kira kesalahan apa lagi nih yang umum ditemukan saat kita nulis script Python ? tulis di kolom komentar dibawah ya!


CARI

Afif A.I

Halo, saya Afif.
Semoga platform NgodingPython.com menjadi sarana untuk berbagi lebih luas