Bahasa python 2


 : "

print "\n"

print sebuah_list

list_baru = sebuah_list + ['PC Linux OS', 'Blankon', 'IGOS', 'OpenSUSE']

print list_baru

print "\n"

print sebuah_tuple

tuple_baru = sebuah_tuple + (100, 200, 300)

print tuple_baru

print "\n"

print sebuah_dictionary

dictionary_baru = {'telp':'022-12345678', 'alamat':'Bandung, Jabar'}

sebuah_dictionary.update(dictionary_baru)

print sebuah_dictionary

print "\n\n"

Kode diatas jika dieksekusi akan muncul tampilan seperti berikut ini :

45

<< ___________ 6.4 hasil eksekusi strukdat_4.py  >>

Menghapus Isi List, Tuple, dan Dictionary

Tidak lengkap rasanya bila dalam sebuah informasi ada yang tidak dapat dihapus. Terkadang ada 

sebuah data yang tidak Anda butuhkan dan ingin Anda hilangkan dari kumpulan data yang dimiliki. 

Misal dalam sebuah list Anda ingin menghapus salah satu elemen. Atau di dictionary, Anda ingin 

menghilangkan salah satu key dari dictionary.ini . Di python sendiri penghapusan salah satu 

elemen  dapat  dilakukan  di  list  dan  dictionary.  sedang  tuple  tidak  mendukung  penghapusan 

elemen. Jika kita lakukan penghapusan pada salah satu elemen di tuple, maka akan muncul pesan 

error : “TypeError: 'tuple' object doesn't support item deletion”. Pada list Anda tinggal menunjuk 

salah  satu  elemennya  dengan  sebuah  angka  dari  0  sampai  panjang  list  ini   dikurangi  satu 

dengan diapit tanda “[“ dan “]”. sedang  pada dictionary Anda tunjuk salah satu key yang akan 

dihapus  dari  dictionary.  Berikut  yaitu   contoh  penghapusan  salah  satu  elemen  pada  list  dan 

dictionary. 

listing : strukdat_5.py 

# cara mendefinisikan list

sebuah_list = ['Zorin OS', 

46

                'Ubuntu', 

                'FreeBSD', 

                'NetBSD', 

                'OpenBSD', 

                'Backtrack', 

                'Fedora', 

                'Slackware']

# cara mendefinisikan tuple

sebuah_tuple = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)

# cara mendefinisikan dictionary

sebuah_dictionary = {'nama':'Wiro Sableng',

                    'prodi':'ilmu komputer',

                    'email':'wirosableng@localhost',

                    'website':'http://www.sitampanggarang.com'

                    }

# cara delete sebuah elemen :

print "cara delete sebuah elemen : "

print "\n"

print sebuah_list

del sebuah_list[0]

print sebuah_list

print "\n"

print sebuah_tuple

# tuple tidak mendukung proses penghapusan elemen :D.(coba hilangkan tanda '#' disampingnya)

#del sebuah_tuple[8]

print sebuah_tuple

print "\n"

print sebuah_dictionary

del sebuah_dictionary['website']

print sebuah_dictionary

print "\n\n"

Kode diatas jika dieksekusi akan muncul tampilan seperti berikut :

47

<< ___________ 6.5 hasil eksekusi strukdat_5.py  >>

Menghapus List, Tuple, dan Dictionary

Pada contoh sebelumnya Anda hanya menghapus salah satu elemen. Lalu bagaimanakah jika ingin 

menghapus  keseluruhan  struktur  data  sehingga  struktur  data  ini   terhapus  dari  memory 

seluruhnya ?. Di Python dengan memakai  perintah del pada sebuah struktur data maka struktur 

data ini  akan dihapus sepenuhnya dari memory. Hal ini berlaku juga bagi variabel dan objek 

yang didefinisikan oleh programmer. Dengan hilangnya dari memory maka struktur data yang telah 

dihapus tidak dapat digunakan lagi oleh program yang Anda bangun. 

list : strukdat_6.py 

# cara mendefinisikan list

sebuah_list = ['Zorin OS', 

                'Ubuntu', 

                'FreeBSD', 

                'NetBSD', 

                'OpenBSD', 

                'Backtrack', 

                'Fedora', 

                'Slackware']

# cara mendefinisikan tuple

48

sebuah_tuple = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)

# cara mendefinisikan dictionary

sebuah_dictionary = {'nama':'Wiro Sableng',

                    'prodi':'ilmu komputer',

                    'email':'wirosableng@localhost',

                    'website':'http://www.sitampanggarang.com'

                    }

# cara update sebuah elemen :

print "cara delete sebuah elemen : "

print "\n"

print sebuah_list

del sebuah_list

#print sebuah_list

print "\n"

print sebuah_tuple

del sebuah_tuple

#print sebuah_tuple

print "\n"

print sebuah_dictionary

del sebuah_dictionary

#print sebuah_dictionary

print "\n\n"

Cobalah hapus tanda “#” pada baris perintah print di bawah perintah del. Cobalah satu persatu dan 

amatilah  apa  yang  terjadi.  Jika  kita  coba  pada  print  sebuah_list  yang  berada  dibawah  del 

sebuah_list. Maka akan muncul pesan error : “NameError : name 'sebuah_list' is not defined”

<< ___________ 6.6  hasil eksekusi strukdat_6.py  >>

49

memakai  Built-in Function pada List, Tuple, dan Dictionary

Apakah fitur – fitur manipulasi list, tuple, dan dictionary hanya terbatas pada hapus, tambah dan 

ubah  ?.  Python  menyediakan  beberapa  fitur  dasar  lainnya  yang  dapat  digunakan  untuk  proses 

mencari nilai maksimum dan minimum, menghitung panjang, membandingkan dua buah struktur 

data yang sejenis, bahkan mengubah struktur data dari list ke tuple atau sebaliknya. 

Untuk  mencari  nilai  maksimum  pada  list,  tuple,  atau  dictionary  digunakan  function  max(), 

sedang  untuk mencari nilai minimum digunakan function min(). Untuk perbandingan dua buah 

struktur data sejenis, misal list dengan list, digunakanlah function cmp(). Function cmp() ini akan 

menghasilkan tiga nilai yaitu -1 jika list pertama kurang dari list kedua, 0 jika kedua list sama, dan 1 

jika list pertama lebih besar dari list kedua. lalu  untuk mencari jumlah elemen yang berada 

pada struktur data ini  digunakan function len(). Dan terdapat juga untuk konversi tipe struktur 

data. Tapi fitur ini hanya dapat digunakan pada list dan tuple. Dictionary tidak mendukung proses 

konversi. Jadi hanya pengubahan dari list ke tuple dan sebaliknya. Untuk pengubahan dari list ke 

tuple digunakan function tuple() sedang  untuk pengubahan dari tuple ke list digunakan function 

list().

Agar lebih paham cobalah sedikit source code tentang penggunaan built-in function yang digunakan 

untuk manipulasi list, tuple, dan dictionary.

listing : strukdat_7.py 

# cara mendefinisikan list

sebuah_list = ['Zorin OS', 

                'Ubuntu', 

                'FreeBSD', 

                'NetBSD', 

                'OpenBSD', 

                'Backtrack', 

                'Fedora', 

                'Slackware']

# cara mendefinisikan tuple

sebuah_tuple = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)

# cara mendefinisikan dictionary

sebuah_dictionary = {'nama':'Wiro Sableng',

                    'prodi':'ilmu komputer',

                    'email':'wirosableng@localhost',

                    'website':'http://www.sitampanggarang.com'

                    }

50

# menambahkan elemen baru

print "menambahkan elemen baru : \n"

print sebuah_list

list_baru = sebuah_list + ['PC Linux OS', 'Blankon', 'IGOS', 'OpenSUSE']

print list_baru

print "\n"

print sebuah_tuple

tuple_baru = sebuah_tuple

print tuple_baru

print "\n"

print sebuah_dictionary

dictionary_baru = {'telp':'022-12345678', 'alamat':'Bandung, Jabar'}

print sebuah_dictionary

print "\n\n"

# membandingkan yang lama dengan yang baru

print "membandingkan yang lama dengan yang baru : \n"

print "sebuah_list banding list_baru : ", cmp(sebuah_list, list_baru)

print "sebuah_tuple banding tuple_baru : ", cmp(sebuah_tuple, tuple_baru)

print "sebuah_dictionary banding dictionary_baru : ", cmp(sebuah_dictionary, dictionary_baru)

print "\n\n"

# mengetahui panjang list, tuple, dan dictionary

print "mengetahui panjang list, tuple, dan dictionary : \n"

print "panjang sebuah_list : ", len(sebuah_list)

print "panjang sebuah_tuple : ", len(sebuah_tuple)

print "panjang sebuah_dictionary : ", len(sebuah_dictionary)

print "\n\n"

# mengubah list, tuple, dictionary menjadi string

print "mengubah list, tuple, dictionary menjadi string : \n"

print str(sebuah_list), ' memiliki panjang karakter : ', len(str(sebuah_list))

print str(sebuah_tuple), ' memiliki panjang karakter : ', len(str(sebuah_tuple))

print str(sebuah_dictionary), ' memiliki panjang karakter : ', len(str(sebuah_dictionary))

# mencari nilai max dan min

print "mencari nilai max dan min : \n"

print "coba periksa sebuah_list :"

print "max : ", max(sebuah_list)

print "min : ", min(sebuah_list)

print "\n"

print "coba periksa sebuah_tuple :"

print "max : ", max(sebuah_tuple)

print "min : ", min(sebuah_tuple)

print "\n"

print "coba periksa sebuah_dictionary :"

51

print "max : ", max(sebuah_dictionary)

print "min : ", min(sebuah_dictionary)

print "\n"

# mengubah list ke tuple dan sebaliknya

print "mengubah list ke tuple : "

print "semula : ", sebuah_list

print "menjadi : ", tuple(sebuah_list)

print "\n"

print "mengubah tuple ke list : "

print "semula : ", sebuah_tuple

print "menjadi : ", list(sebuah_tuple)

Dengan adanya  built-in function ini  pekerjaan Anda sudah dimudahkan oleh Python dalam 

memanipulasi  struktur  data  yang telah  Anda definisikan sebelumnya.  Berikut  yaitu  salah satu 

contoh hasil operasi dengan built function  dari kode diatas.

<< ___________ 6.7 hasil eksekusi strukdat_7.py  >>

52

7. Membuat Function

Pengenalan Function Tanpa “return”

Pada saat membuat program terkadang kita menyalin blok kode yang sama di baris  berikutnya, 

misal  untuk mencetak sebuah biodata kita  salin  kembali  lalu  ganti  nilai  –  nilainya untuk 

menampilkan  biodata  ini .  Apakah  harus  menyalin  blok  kode  di  setiap  bagian  kode  yang 

membutuhkan  kode  ini   ???.  Waktu  dulu  kuliah  Algoritma  dan  Pemrograman  I,  saat  

mempelajari pemrograman pertama kalinya, baris kode yang sama dipakai berulang – ulang untuk 

mengeluarkan hasil tertentu. Tapi jadi tidak efisien, sebab  ukuran file program yang ditulis cukup 

besar.  Oleh  sebab   itu  hampir  di  setiap  bahasa  pemrograman  terdapat  fitur  yang  dinamakan 

function. Nama lainnya method,  sub routine, atau fungsi.  Function ini berguna untuk penggunaan 

kembali blok kode yang akan digunakan di baris kode lain. Sekali tulis tinggal panggil. 

Function ini jelas beda dengan built-in function yang ada di Python. Built-in function sendiri yaitu  

function yang telah dibuatkan oleh pengembang bahasa pemrograman Python. sedang  function 

dibuat oleh programmer yang memakai  bahasa pemrograman Python, atau istilah lainnya user-

defined function.

Di Python untuk membuat function digunakan keyword def. lalu  diikuti nama function yang 

diinginkan  lalu  parameter  yang  dibutuhkan  dengan  diawali  tanda  “(“  dan  “)”.Untuk  membuka 

function dimulai dengan tanda “:”. Tidak seperti di C, Java, atau PHP yang diawali dengan tanda 

“{“ dan diakhiri “}” untuk membuka sebuah function. Lalu tutupnya ? Seperti dijelaskan diawal di 

Python sendiri  digunakan indentasi  untuk menentukan apakah baris  kode ini   milik  sebuah 

function,  if, atau pengulangan. Jadi jika Anda ingin menuliskan kode untuk  function yang Anda 

buat. Harus ada jarak satu indentasi agar kode ini  dianggap sebagai kode dari  function yang 

Anda tulis. lalu  Anda dapat menambahkan  keyword return jika  function yang Anda tulis 

ingin mengembalikan nilai keluaran. 

 

Berikut  ada  contoh  tentang  pembuatan  function yang  memiliki  parameter  dan  tidak  memiliki 

parameter. Penggunaan return digunakan pada contoh berikutnya :

listing : fungsi_1.py 

def fungsi_tanpa_parameter():

    for i in range(1, 5):

        print "looping ke - ", i

    

def fungsi_berparameter(batas_akhir):

    for i in range(1, batas_akhir):

        print "looping ke - ", i

    

53

print " contoh penggunaan fungsi tanpa parameter : "

print "hasil : ", fungsi_tanpa_parameter()

print "\n\n"

print " contoh penggunaan fungsi berparameter : "

print "hasil : ", fungsi_berparameter(10)

Sebuah function jika dipanggil langsung nilai keluarannya tidak akan dicetak. Tetapi jika dipanggil 

melalui  sebuah  function seperti  print nilai  keluarannya  akan  ditampilkan.  Kenapa  nilainya 

“None” ? sebab  di function yang tadi ditulis tidak disertakan keyword return. Jika sebuah function 

tidak diberikan return maka dapat dibilang function ini  dianggap procedure. Sebuah function 

yang tidak memiliki nilai keluaran. 

<< ___________ 7.1 hasil eksekusi fungsi_1.py  >>

Function yang memakai  “return”

Bagaimana kalau ditambahkan  return ? Jika ditambahkan  return,  function yang Anda tulis akan 

menghasilkan nilai keluaran. Jika dipanggil langsung maka program tidak akan menampilkan nilai 

keluaran  dari  function ini .  Jika  function ini   dipanggil  melalui  function atau  keyword 

misalnya  print, maka  nilai  keluarannya  akan  ditampilkan.  Berikut  terdapat  function yang 

menghasilkan nilai keluaran yang memiliki parameter dan tidak berparameter :

54

listing : fungsi_2.py 

def fungsi_tanpa_parameter():

    temp = 0

    for i in range(1, 5):

        temp = temp + i

    return temp

    

    

def fungsi_berparameter(batas_akhir):

    temp = 0

    for i in range(1, batas_akhir):

        temp = temp + i

    return temp

    

print " contoh penggunaan fungsi tanpa parameter : "

print "hasil : ", fungsi_tanpa_parameter()

print "hasil : ", fungsi_tanpa_parameter()

print "hasil : ", fungsi_tanpa_parameter()

print "\n\n"

print " contoh penggunaan fungsi berparameter : "

print "hasil : ", fungsi_berparameter(15)

print "hasil : ", fungsi_berparameter(20)

print "hasil : ", fungsi_berparameter(25)

Anda  sendiri  dapat  melihat  perbedannya  antara  function yang  berparameter  dengan  tidak 

berparameter.  Pada  function yang  tidak  berparameter.  saat   dipanggil  berulang  –  ulang  nilai 

keluarannya  tetap  sama.  Berbeda  dengan  function yang  memiliki  parameter,  nilai  keluaranya 

berbeda – beda saat  dipanggil. Tergantung nilai masukan yang diberikan.

<< ___________ 7.2 hasil eksekusi fungsi_2.py  >>

55

Default Argument pada Python

Sekarang Anda sudah mengenal function yang berparameter dan tidak berparameter. Umumnya saat 

akan memberikan nilai pada sebuah  function, nilai ini  akan diberikan saat  function ini  

dipanggil. Apakah saat memasukkan nilai boleh tidak diisi  atau dilewat ?  Lalu apakah akan ada 

nilainya ?. Di Python terdapat sebuah fitur yang dinamakan default argument saat menulis sebuah 

function.  Default argument sendiri yaitu  sebuah argumen yang sudah diisi nilai terlebih dahulu 

jika argumen ini  tidak diberikan saat memanggil  function.  Jadi sekalipun dilewat nilai dari 

argument  ini   akan dipenuhi  dengan nilai  default nya.  Berikut  dibawah ini  terdapat  contoh 

pemanggilan function yang melewatkan semua argumen yang dibutuhkan function, dan yang tidak 

melewatkan semua argumen yang akan ditangani oleh default argument : 

listing : fungsi_3.py 

def cetak_biodata( nama, kota, umur=18):

   print "Nama : ", nama;

   print "Umur : ", umur;

   print "Kota : ", kota;

   return;

# kalau parameter diisi semua

print "Tanpa memakai default argument : "

cetak_biodata( nama="miki", umur=50, kota="bandung" )

print "\n"

# kalau parameter tidak diisi semua

print "Memakai default argument : "

cetak_biodata(kota="bandung", nama="miki")

Kode diatas jika dieksekusi akan tampil seperti berikut :

56

<< ___________ 7.3 hasil eksekusi fungsi_3.py  >>

Variable-length Argument pada Python

Sekarang kita  akan mengenal  fitur  yang dinamakan dengan  variable-length  argument.  Fitur  ini 

digunakan saat  ingin membuat sebuah function yang memiliki argumen yang dinamis. Argumen 

ini dapat disebut sebagai argumen yang tidak utama. Misal dalam sebuah fungsi dibutuhkan tiga 

argumen, maka argumen ke – 4 sampai ke – n argumen, tidak akan ditampung oleh argumen utama. 

Tapi ditampung oleh argumen terakhir yang menampung seluruh argumen yang diberikan sesudah  

argumen utama. Di Python untuk menandakan bahwa argumen ini  variable-length argument, 

diberikan tanda “*” pada argumen terakhir.  Variable-length argument ini harus disimpan di akhir 

sesudah  argumen biasa dan default argument. Apabila disimpan di urutan awal, maka Python akan 

mengeluarkan error : “SyntaxError: invalid syntax”. Sebagai contoh Anda dapat perhatikan kode 

berikut ini : 

listing : fungsi_4.py 

def cetak_perolehan_nilai( nama, twitter, *scores):

   print "Nama : ", nama;

   print "Twitter : ", twitter;

   print "Score yang diperoleh : "

   i = 1

   for score in scores:

       print "nilai ke - %d : %d" % (i, score)

       i= i + 1

   

   return;

# kalau parameter diisi semua

print "Dengan adanya variable-length variabel sisa akan menjadi tuple : "

cetak_perolehan_nilai("Silvy", "@sivlysiv", 90, 80, 70, 80, 90)

57

Seperti yang Anda lihat pada contoh diatas,  argumen utama yaitu  nama dan twitter. Apabila kita 

memasukkan argumen sesudah nya, maka argumen ini  akan dikumpulkan dalam satu wadah 

yaitu *scores. Berapapun kita masukkan argumen, akan ditampung menjadi sebuah list yang berisi 

argumen – argumen yang dimasukkan sesudah  nama dan twitter.

<< ___________ 7.4 hasil eksekusi fungsi_4.py  >>

Keyword Argument pada Function

Dalam penggunaan  function Anda  mesti  melewatkan  argumen  sesuai  urutan  yang  ditulis  pada 

parameter yang dibutuhkan oleh function yang Anda tulis. Apakah mungkin jika ditulis tanpa urutan 

argumen sudah baku pada function ini . Dalam function terdapat sebuah fitur yang dinamakan 

keyword argument.  Keyword argument ini dapat melewatkan argumen tanpa harus sesuai urutan. 

Keyword argument diberikan saat memanggil sebuah  function dengan mengambil nama argumen 

yang terdapat di  function disambung dengan tanda “=” dan nilai dari argumen ini . Jika kita 

memberikan  argumen  yang  tidak  sesuai  urutan  tanpa  memakai   keyword  argument,  maka 

argumen yang diterima function ini  tidak akan sesuai.

listing : fungsi_5.py 

def cetak_biodata( nama, umur, kota):

   print "Nama : ", nama;

   print "Umur : ", umur;

   print "Kota : ", kota;

   return;

# kalau pakai keyword argument : mau urutannya gimanapun input akan sesuai

print "Tanpa memakai keyword argument : "

58

cetak_biodata( kota="bandung", nama="miki", umur=50 )

print "\n"

# kalau tidak memakai keyword argument : mau urutannya gimanapun input tidak akan sesuai

print "Memakai keyword argument : "

cetak_biodata( "bandung", "miki", 50)

print "\n"

# kalau tidak memakai keyword argument : tapi urutannya sesuai maka input  akan sesuai

print "Memakai keyword argument : tapi urutannya sesuai "

cetak_biodata(  "miki", 50, "bandung")

Pada  contoh  diatas,  Anda  dapat  melihat  perbedaan  antara  function yang  melewatkan  keyword 

argument dengan yang tidak memakai   keyword argument. Contoh yang tidak memakai  

keyword argument tidak akan menerima masukan sesuai yang dibutuhkan  function saat  urutan 

argumennya diacak. 

<< ___________ 7.5 hasil eksekusi fungsi_5.py  >>

Keyword-length Argument pada Function 

59

Keyword-length  argument memiliki  cara penggunaan yang sama hanya saja, keyword-length ini 

menampung  keyword argument yang berlebih saat   diberikan kepada  function yang dipanggil. 

Keyword argument yang berlebih akan diterima dalam bentuk dictionary.

listing: fungsi_6.py 

def cetak_perolehan_nilai( nama, twitter, **data_tambahan):

   print "Nama : ", nama;

   print "Twitter : ", twitter;

   print "\n"

   print "Data Lainnya : "

   i = 1

   for data in data_tambahan:

       print "%s : %s" % (data, data_tambahan[data])

       

   

   return;

# kalau parameter diisi semua

print "Dengan adanya keyword argument, argumen tersisa akan menjadi dictionary : "

cetak_perolehan_nilai("Silvy","@sivlysiv",email="silvysilvy@gmail.com", 

facebook="www.facebook.com/silvysil", telp="0838-1234-5678")

Pada contoh diatas, keyword argument yang berlebih ditampung kedalam argument data_tambahan 

dan argumen berlebih ini  disimpan dalam dictionary.

<< ___________ 7.6 hasil eksekusi fungsi_6.py  >>

60

Pass by Reference dan Pass by Value pada Python

Berikutnya terdapat masalah  pass by value atau  pass by reference.  Di Python semua nilai  akan 

dilewatkan secara  by reference. Artinya jika kita mengubah argumen di dalam fungsi maka nilai 

argumen   yang  direferensi  ini   akan  ikut  berubah  juga.  Misalkan  dibawah  contoh  berikut 

terdapat sebuah list yang akan diganti dengan nilai baru, dan ada juga yang ditambahkan nilai baru. 

listing : fungsi_7.py 

def sebuah_fungsi(sebuah_list):

    sebuah_list = [1, 2, 3, 4, 5]

    print sebuah_list

    

def sebuah_fungsi_lainnya(sebuah_list):

    sebuah_list.append([10, 20, 30])

    print sebuah_list

ini_list = [10, 20, 30]

sebuah_list = [100, 200, 300]

print "apakah ini_list berubah ? "

print ini_list

sebuah_fungsi(ini_list)

print ini_list

print ini_list

sebuah_fungsi_lainnya(ini_list)

print ini_list

print "apakah sebuah_list berubah ? "

print sebuah_list

sebuah_fungsi(sebuah_list)

print sebuah_list

print sebuah_list

sebuah_fungsi_lainnya(sebuah_list)

print sebuah_list

Pada kode diatas,  Anda akan melihat sebuah perbedaan yang cukup penting.  saat  sebuah  list 

diganti  nilainya  maka  list yang  ada  di  luar  function tidak  akan  terpengaruh.  Tapi  saat   kita 

menambahkan data baru dengan memakai  method pada list ini . Nilai diluar ikut berubah,. 

Hal ini terjadi sebab  pada function sebuah_fungsi_lainnya(), list sebuah_list masih menunjuk atau 

merujuk ke sebuah_list yang berada diluar. Atau dalam kata lain masih menunjuk ke “address” yang 

sama di memori utama.

61

<< ___________ 7.7 hasil eksekusi fungsi_7.py  >>

Variable Scope pada Python

Variable scope yaitu  sebuah kondisi dimana  variabel diakses secara lokal pada blok kode tertentu 

atau bersifat universal yang menyebabkan variabel ini  dapat diakses dari blok kode manapun. 

Misal  ada  sebuah  variabel  di  dalam  function.  Variabel  ini   bersifat  lokal  dan  hanya  dapat 

diakses didalam function ini . Lalu bagaimanakah kita menjadikan sebuah variabel agar bersifat 

global ?. Di Python terdapat sebuah keyword yang bernama global.  Keyword ini digunakan untuk 

merujuk sebuah variabel di luar blok kode, misalnya sebuah variabel di dalam  function, dengan 

nama yang sama. 

listing : fungsi_8.py 

def sebuah_fungsi():

    angka =  10

    print "di dalam sebuah_fungsi, angka bernilai : ", angka

def sebuah_fungsi_lainnya():

    global angka

    angka = 114

    print "di dalam sebuah_fungsi, angka bernilai : ", angka

    

angka = 6666

print "sebelum dipanggil sebuah_fungsi : ", angka

sebuah_fungsi()

print "sesudah dipanggil sebuah_fungsi : ", angka

print "\n\n"

62

print "sebelum dipanggil sebuah_fungsi_lainnya : ", angka

sebuah_fungsi_lainnya()

print "sesudah dipanggil sebuah_fungsi_lainnya : ", angka

Pada  kode  diatas  variabel  yang  bernama  angka  dibubuhi  keyword global pada  function 

sebuah_fungsi_lainnya(). Hasilnya saat angka diubah nilainya. Maka nilai di variabel angka yang 

berada di luar blok function sebuah_fungsi_lainnya() ikut berubah.

<< ___________ hasil eksekusi fungsi_8.py  >>

63

8. Mengenal Exception

Jenis – Jenis Exception

Exception yaitu  sebuah cara di Python untuk menjebak error, dan menangangi error tak terduga 

pada  program Python  yang  Anda  tulis.  Exception akan  tetap  menjalankan  baris  kode  program 

dibawah  bagian  kode program yang  error.  Hal  ini  mempermudah  proses  debugging.  Lalu  apa 

bedanya jika kita memakai  kondisional biasa yang memakai   if untuk mencegah  error ? 

Pertama Anda harus mencari cara untuk menangkap nilai – nilai yang error, misal saat  membuka 

file Anda harus memakai   method – method yang ada pada  file untuk mengetahui  error atau 

tidak. Kedua dengan memakai  kondisional  if   biasa, program yang Anda tulis akan langsung 

dihentikan saat  error terjadi. Ketiga pengambilan error akan otomatis ditangani oleh Python dan 

error ini   akan  ditangani  sesuai  dengan  penanganan  yang  Anda  lakukan,  dan  baris  kode 

program dibawahnya akan tetap dieksekusi.

Python  sendiri  sudah  menyediakan  beberapa  standard  error yang  dapat  digunakan  oleh 

programmer dalam menjaga pengembangan aplikasinya dari  error yang tak terduga. Anda sendiri 

dapat  membuat  error menurut  definisi  Anda.  Hal  ini   akan diulas  di  bagian  akhir  bab  ini. 

Berikut yaitu  beberapa standard error  yangt terdapat di Python :

No Nama Exception Keterangan

1 Exception Menangani semua exception

2

StopIteration Exception ini  muncul  saat   method next()  tidak 

menunjuk ke objek apapun saat iterasi

3 SystemExit Exception ini muncul saat  sys.exit() dipanggil

4

StandardError Exception untuk  menangani  semua  built-in  

exception kecuali StopIteration dan SystemExit

5

ArithmeticError Exception untuk menangani  error saat perhitungan 

angka

6

OverflowError Exception ini  muncul  saat   perhitungan  angka 

melebihi  batas  maksimum  dari  tipe  angka  yang 

dihitung

7

FloatingPointError Exception ini   muncul  saat   terdapat  kegagalan 

pada perhitungan angka bertipe float

8

ZeroDivisionError Exception ini  muncul  jika  ada  pembagian  atau 

modulus oleh 0 terhadap angka tipe apapun

10

AssertionError Exception ini muncul saat  terjadi kegagalan pada 

saat perintah assert dijalankan

11

AttributeError Exception ini muncul saat  gagal menunjuk atribut 

dari suatu objek

12 EOFError Exception ini  muncul  saat   tidak  ada  input  saat 

64

memakai   function raw_input()  atau  input  dan 

telah  mencapai  bagian  akhir  file  saat  pembacaan 

file.

13

ImportError Exception ini  muncul  saat   gagal  saat 

memakai  import

14

KeyboardInterrupt Exception ini  muncul  saat   user  meng-interrupt 

eksekusi  program,  biasanya  saat   menekan 

kombinasi ctrl + c

15

LookupError Exception muncul saat  gagal pada saat proses look 

up

16

IndexError Exception ini muncul saat  tidak ada indeks yang 

dituju pada struktur data seperti list atau tuple

17

KeyError Exception ini  muncul  saat   tidak  ada  key yang 

dituju pada dictionary

18

NameError Exception ini  muncul  saat   variabel  tidak 

ditemukan pada lingkup lokal di suatu function dan 

kondisional atau pada lingkup global

19

UnboundLocalError Exception ini  muncul  saat   mencoba  mengakses 

variabel  lokal  di  function atau  method tapi  belum 

ada nilainya

20

EnvironmentError Exception in muncul saat  terjadi kegagalan diluar 

lingkup Python

21

IOError Exception in  muncul  saat   proses  input/output 

gagal,  misal  saat  memakai   print atau  saat 

membuka file

22

OSError Exception ini muncul saat  terjadi kegagalan pada 

sistem operasi yang digunakan

23

SyntaxError Exception ini muncul saat  terjadi kesalahan pada 

penggunaan sintaks Python

24

IndentationError Exception ini  muncul  saat   indentasi  pada  blok 

kode tidak sesuai penggunaannya.

25

SystemError Exception ini  muncul  saat   terdapat  masalah 

internal  pada  interpreter,  saat  error ini  muncul 

interpreter tidak akan keluar

26

TypeError Exception ini  muncul  jika ada kesalahan tipe data 

saat proses perhitungan, misal huruf dibagi angka

27

ValueError Exception ini  muncul  saat   argumen  yang  tidak 

sesuai diterima oleh builtin function

28

RuntimeError Exception ini muncul saat  terjadi kesalahan yang 

tidak masuk kategori manapun

29

NotImplementedEror Exception ini  muncul  saat   abstract  method dari 

suatu  class tidak  diimplementasikan di  class yang 

mewarisinya.

65

Agar lebih paham dibawah ini ada beberapa contoh kode yang penggunaan  exception-nya sangat 

sering digunakan. Sebagai contoh pertama berikut terdapat kode yang berisi pembagian oleh angka 

nol.

listing : exception_1.py 

sebuah_angka = 29

try:

    print sebuah_angka / 0

except:

    print "proses perhitungan  gagal "

print "proses cetak ini masih dapat dijalankan  "

try:

    print sebuah_angka / 0

except ZeroDivisionError, e:

    print "proses perhitungan gagal sebab   : ", e

print "proses cetak ini masih dapat dijalankan  "

print sebuah_angka / 0

# jika tidak memakai exception maka proses berikutnya tidak akan dijalankan

print "apakah proses cetak ini masih dapat dijalankan ??? "

Di dalam try terdapat kode yang kemungkinan akan memunculkan exception. sedang  di dalam 

except yaitu  kode yang akan dieksekusi jika exception ini  muncul.  Pada try-except yang 

pertama, semua error akan ditangani dan Anda tidak akan mengetahui jenis exception apa yang 

yang ditangani. Pada try-except yang kedua, Anda memprediksi akan menangani error jika terjadi 

pembagian oleh nol. Manakah yang lebih baik ? Pastikan Anda sudah memiliki perkiraan apa saja 

error  yang  akan  terjadi  sehingga  saat  debugging  nanti  akan  mempermudah  Anda  untuk 

memperbaiki kode program Anda. Pada blok kode try-except sekalipun error kode dibawahnya akan 

tetap dieksekusi. Pada proses perhitungan di bagian akhir tidak ditangani oleh try-except sehingga 

kode dibawahnya tidak dieksekusi. Berikut hasil yang diberikan jika kode dieksekusi :

66

<< ___________ 8.1 hasil eksekusi exception_1.py  >>

Contoh lain yang umum dipakai yaitu  IndexError dan KeyError. Kedua error ini umum dipakai 

saat operasi list, tuple, dan dictionary. Berikut terdapat contoh menunjuk indeks dan key yang tidak 

terdapat pada list, tuple, dan dictionary yang didefinisikan dalam kode dibawah ini. 

listing : exception_2.py 

sebuah_list = [1, 2, 3, 4, 5]

sebuah_tuple = (1, 2, 3, 4, 5)

sebuah_dictionary = {'nama':'Mangaraja', 'email':'mangaraja@yahoo.com'}

try:

    print sebuah_list[10]

except IndexError, e:

    print "proses gagal sebab   : ", e

print "proses cetak ini masih dapat dijalankan  "

try:

    print sebuah_tuple[10]

except IndexError, e:

    print "proses gagal sebab   : ", e

print "proses cetak ini masih dapat dijalankan  "

try:

    print sebuah_dictionary['website']

except KeyError, e:

    print "proses gagal sebab   : ", e

print "proses cetak ini masih dapat dijalankan  "

67

Pada contoh diatas “sebuah_list”  dan “sebuah_tuple” ditangani  oleh  try-except yang menangani 

exception IndexError. Pada masing – masing blok, kita ingin mencoba indeks yang tidak ada pada 

list dan  tuple ini .  sedang   pada  blok  try-except untuk  dictionary,  kita  ingin  mencoba 

menunjuk key “website” tapi sebab  key ini  tidak ada, maka akan muncul exception KeyError.

<< ___________ 8.2 hasil eksekusi  exception_2.py  >>

Berikutnya contoh  exception yang tak kalah populer lainnya yaitu  AttributeError.  Exception ini 

muncul saat  sebuah class tidak memiliki atribut (variabel) yang diakses oleh programmer. Hal ini 

sangat penting untuk diperhatikan saat  merancang sebuah aplikasi  berbasis objek. Anda harus 

memeriksa apakah atribut yang Anda akses pada sebuah kelas ada pada saat perancangan atau tidak. 

Jika tidak yakin gunakanlah try-except untuk menjebak AttributeError ini . 

listing : exception_3.py 

class PersegiPanjang:

    panjang = 0

    lebar = 0

    def __init__(self, p, l):

        self.panjang = p

        self.lebar = l

        

        

prsg_pjg = PersegiPanjang(10, 5)

try:

    print "panjang : ", prsg_pjg.panjang

    print "lebar : ", prsg_pjg.lebar

    print "tinggi :", prsg_pjg.tinggi

except AttributeError, e:

    print "proses pemanggilan atribut gagal sebab  --> ", e

68

print "proses cetak ini masih dapat dijalankan"

Pada contoh diatas, kita ingin mencoba mengakses atribut tinggi pada objek prsg_pjg. Sebelumnya 

tahapan yang dilalui yaitu  proses instansiasi, dimana kita memanggil sebuah template objek yang 

akan dibentuk kedalam sebuah variabel. lalu  di bagian  try-except ini  kita coba akses 

atribut  tinggi.  sebab   atribut  ini   tidak  ada  di  kelas  persegi  panjang,  maka  exception 

AttributeError akan muncul. 

<< ___________ 8.3 hasil  eksekusi exception_3.py  >>

Contoh  yang  terakhir  dari  sekian  banyak  exception yang  terdapat  di  Python  yaitu   IOError. 

Exception ini biasa terjadi saat  proses input data, saat mencetak data, atau saat operasi file. Pada 

contoh berikut kita akan membuka sebuah file, tapi file ini  tidak ada. Secara default jika kita 

membuka  file tanpa  menyertakan mode  pembacaan,  maka mode  ini   yaitu   mode 'r'  yang 

artinya read atau baca.

listing : exception_4.py 

try :

    f = open('nilai.txt')

except IOError, e:

    print "Proses pembukaan file gagal sebab  : ", e

print "proses cetak pada baris ini masih dapat dijalankan"

Pada contoh diatas kita ingin  file nilai.txt, tapi sebab  file ini  belum pernah ditulis sebelumnya 

maka exception akan muncul yaitu IOError. Selain digunakan untuk file, IOError dapat terjadi juga 

saat pembacaan built-in storage milik Python seperti saat pembacaan pickle, shelve, dan marshal.

69

<< ___________ 8.4 hasil  eksekusi exception_4.py  >>

Menyusun Multiple Except

Apakah kita dapat menangkap exception dalam satu  blok try-except ?. Di Python sendiri terdapat 

fitur multiple except, yaitu kita dapat menangkap exception dengan baris except yang berbeda. Hal 

ini dilakukan jika kita ingin memberikan perlakuan berbeda kepada setiap exception yang ditangani. 

Lebih lemgkapnya pantau kode dibawah ini.

listing : exception_5.py 

try:

    

    angka1 = int(raw_input('masukkan angka ke-1 : '))

    angka2 = int(raw_input('masukkan angka ke-2 : '))

    print 'hasil perhitungan : ', angka1 / angka2

    

except ZeroDivisionError, e:

    print "proses pembagian gagal sebab   : ", e

except ValueError, e:

    print "proses perhitungan gagal sebab  : ", e

print "proses cetak ini masih dapat dijalankan  "

Pada kode diatas kita mencoba menjebak dua buah exception dengan dua baris except berbeda. Hal 

ini  dilakukan agar perlakuan pada penanganan setiap  exception memiliki penanganan yang 

berbeda. Misal pada baris except pembagian nol ada informasi “proses pembagian gagal sebab  : “ , 

sedang  di baris except nilai error terdapat informasi “proses perhitungan gagal sebab  : “. Jadi 

dengan memakai  baris except yang berbeda Anda dapat menangani error yang berbeda sesuai 

kebutuhan Anda.

70

<< ___________ 8.5 hasil eksekusi  exception_5.py  >>

memakai  Multiple Exception

Berbeda sedikit  pada contoh sebelumnya, jika pada setiap  exception ditangani  oleh setiap baris 

except.  Maka  pada  kaidah  multiple  exception di  satu  except menangani  beberapa  exception. 

Bedanya, semua  exception yang ditangani baris  except ini  akan mendapat penanganan yang 

sama. 

listing : exception_6.py 

try:

    

    angka1 = float(raw_input('masukkan angka ke-1 : '))

    angka2 = float(raw_input('masukkan angka ke-2 : '))

    print 'hasil perhitungan : ', angka1 / angka2

    

except (ZeroDivisionError, ValueError, TypeError),  e:

    print "proses perhitungan gagal sebab   : ", e

print "proses cetak ini masih dapat dijalankan  "

Kode diatas jika dieksekusi akan muncul tampilan seperti berikut :

71

<< ___________ 8.6 hasil  eksekusi exception_6.py  >>

Try-Except Bersarang

Mirip  seperti  kondisional  atau  perulangan yang dapat  ditambahkan blok kode kondisional  atau 

perulangan didalamnya.  Try-except pun memiliki   kaidah yang sama dimana  try-except dapat 

disimpan didalam  try-except yang lainnya. Prioritasnya yaitu  tangani yang luar terlebih dahulu. 

Jika terjadi di  try-except terluar maka blok kode didalamnya yang terdapat  try-except tidak akan 

dieksekusi. Jika di blok luar tidak terdapat error. Maka penanganan exception di try-except bagian 

dalam akan dilakukan. 

listing : exception_7.py 

try:

    

    angka1 = float(raw_input('masukkan angka ke-1 : '))

    angka2 = float(raw_input('masukkan angka ke-2 : '))

    try :

        print 'hasil perhitungan : ', angka1 / angka2

    except ZeroDivisionError, e:

        print "proses perhitungan gagal sebab   : ", e

except ValueError,  e:

    print "proses input gagal sebab   : ", e

print "proses cetak ini masih dapat dijalankan  "

Jika  pada  contoh  exception_5.py  baris  except ZeroDivisionError  disimpan  di  tingkat  pertama, 

sekarang  baris  ini   disarangkan  di  try-except yang  utama.  Dengan  demikian  Anda  dapat 

menangani exception dari dalam secara langsung. 

72

<< ___________ 8.7 hasil eksekusi  exception_7.py  >>

Membuat Exception Sendiri

Lalu  apakah kita terbatas pada penanganan standard exception Python saja ?. Anda dapat membuat 

exception Anda  sendiri  dengan  membuat  sebuah  kelas  yang  diturunkan  dari  kelas  Exception. 

Dengan cara ini , Anda dapat membuat exception Anda sesuai kebutuhan pada kasus yang akan 

Anda tangani.  Misal  kita  ingin membuat  sebuah  exception jika angka yang dimasukkan yaitu  

angka negatif. Pertama kita buat dulu class nya dengan nama yang diingikan, turunkan dari kelas 

Exception, dan tentukan penanganan error pada method – method di  kelas ini . 

listing : exception_8.py 

class NegativeValueError(Exception):

    def __init__(self, value):

        self.value = value

    

    def __str__(self):

        s = "Tidak menerima angka kurang dari 0 " + str(self.value)

        return s

            

def cekAngka(angka):

    if angka < 0:

        raise NegativeValueError(angka)

try:

    sebuah_angka = int(raw_input("masukkan sebuah angka : "))

    cekAngka(sebuah_angka)

except (NegativeValueError, TypeError), e:

73

    print "proses gagal sebab  : ", e

Untuk  memanggil  exception-nya  kita  memerlukan  keyword raise saat   exception ini  

dimunculkan  maka  exception akan  ditangani  except dan  mengeluarkan  pesan  error-nya.  Pesan 

ini   berasal  dari  function __str__()   yang  sebelumnya  telah  kita  definisikan  pada  kelas 

NegativeValueError.

<< ___________ 8.8 hasil  eksekusi exception_8.py  >>

memakai  “finally” pada Try-Except

Dan  akhirnya  sekarang  kita  membahas  finally.  Keyword  ini  digunakan  untuk  menentukan 

penanganan  apa  yang  harus  dilakukan  baik  saat   exception muncul  atau  tidak.  Misal  saat 

mengambil data dari  database,  kita tidak akan tahu ada kegagalan apa yang akan terjadi.  Agar 

program kita tetap aman dan data tidak rusak. Maka baik terjadi kegagalan atau tidak koneksi ke 

database harus  ditutup.  Hal  ini   juga  bisa  terjadi  saat  pembacaan  file.  Untuk  mencegah 

kerusakan file, baik akan terjadi error atau tidak, file harus ditutup. Di blok finally ini penanganan 

yang terjadi saat  exception muncul atau tidak disimpan. 

listing : exception_9.py 

try:

    

    angka1 = float(raw_input('masukkan angka ke-1 : '))

    angka2 = float(raw_input('masukkan angka ke-2 : '))

    try :

        print 'hasil perhitungan : ', angka1 / angka2

    except ZeroDivisionError, e:

        print "proses perhitungan gagal sebab   : ", e

except ValueError,  e:

    print "proses input gagal sebab   : ", e

finally:

74

    print "coba perhatikan lagi nilai yang anda masukkan "

    

    

print "proses cetak ini masih dapat dijalankan  "

Kode diatas jika dieksekusi akan muncul tampilan seperti berikut :

<< ___________ 8.9 hasil  eksekusi exception_9.py  >>

9. Membuat File

Pengenalan File

Biasanya jika kita tidak memakai   file, hasil pemrosesan data hanya akan disimpan di  main 

memory. sesudah  program dihentikan atau tiba – tiba komputer Anda mati, semua data akan hilang. 

Lalu bagaimana jika ingin memakai  kembali data yang sudah diproses sebelumnya ?. Untuk 

menyimpan data agar bisa diproses di kesempatan selanjutnya, misal komputer dimatikan lalu  

dinyalakan lagi hari esoknya. Kita butuh sebuah penyimpanan yang bersifat resident dan disimpan 

di  secondary storage seperti  harddisk. Python sendiri menyediakan beberapa media penyimpanan 

yang bisa digunakan oleh programmer Python, ada file, shelve, marshal, pickle, dan sqlite3.

Pada bab ini kita akan bahas mengenai file berupat txt. File di Python bisa berupa txt, csv, atau jenis 

lainnya. Txt merupakan contoh file yang sering digunakan. File jenis ini berisi plain text. File jenis 

ini menyimpan karakter ascii standard yang diterima dari user.

Pada pembuatan file terdapat beberapa mode dalam manipulasi file. Berikut daftar mode manipulasi 

file ini  :

No Mode Keterangan

1 r Membuka  file dan  hanya  untuk  pembacaan 

saja.  Pointer  file akan  ditempatkan  di  awal 

file.  Jika  pada  saat  pembukaan  file tidak 

disertakan mode manipulasi  file, maka mode 

75

ini  secara  default dipakai  untuk  manipulasi 

file

2 w

Membuka  file dan  hanya  untuk  penulisan 

saja.  Jika  file yang  dibuka  sudah  ada  dan 

memakai   mode  'w',  maka  file ini  

akan ditimpa. Jika  file tidak ada maka akan 

dibuatkan file baru. 

3 a

Membuka  file untuk  penambahan  isi  file. 

Pointer file disimpan di bagian akhir file jika 

file ini  ada. Jika file tidak ada maka akan 

dibuatkan file baru.

4 b

Mode ini ditambahkan masing – masing pada 

mode  r,  w,a  menjadi  rb,  wb,  ab.  Dengan 

menambahkan  mode  b  pada  setiap  mode 

manipulasi standar. Maka pemba file caan file 

akan dilakukan dalam format biner

5 +

Mode ini ditambahkan kedalam mode r, w, a. 

   r+  : baca dan tulis

   w+ : tulis dan baca

   a+  : tambah dan baca

Membuat File Baru

Agar lebih paham kita akan mencoba membuat sebuah file txt. Pertama kita biasakan cegah error 

dengan memakai  try-except dan tangkap exception IOError, agar jika terjadi error kelak, kita 

bisa menanganinya dengan lebih mudah. lalu  di dalam blok try-except ini  buat sebuah 

objek  file dengan  memakai   built-in  function open().  Pada  function ini   terdapat  dua 

parameter yang biasa digunakan yaitu, nama file serta mode manipulasi file-nya. sebab  kita ingin 

membuat file baru, maka mode “w” digunakan pada kasus pertama berikut : 

listing : file_1.py 

try:

    sebuah_file = open("absen.txt", 'w')

    print "nama file yang tadi dibuat : ", sebuah_file.name

    print "mode pembacaan file : ", sebuah_file.mode

    print "apakah filenya udah ditutup ? : ", sebuah_file.closed

    sebuah_file.close()

    print "apakah filenya udah ditutup ? : ", sebuah_file.closed

except IOError, e:

    print "proses gagal sebab  : ", e

saat  kita sudah membuka sebuah file dan terbentuk objek file. Kita dapat mengakses method dan 

76

atribut  pada objek  file ini .  Atribut yang sering diakses untuk pemrosesan  file antara lain : 

name, mode, closed. Atribut name yaitu  nama  file ini , mode yaitu  mode manipulasi  file 

ini , dan closed menyatakan apakah file ini  sudah ditutup atau belum. sedang  method 

yang diakses diatas  yaitu  close(),  yang digunakan untuk menutup  file sesudah  penggunaan  file 

selesai. Dengan menutup file, penggunaan memori utama akan dihemat. Jika tidak pernah menutup 

file dalam jumlah yang banyak bisa menyebabkan memory leak. Jadi berhati – hatilah :D.

<< ___________ 9.1 hasil  eksekusi file_1.py  >>

Mengisi File

Pada contoh pertama, file yang kita buat masih kosong, belum berisi. Sesuai namanya kita sedang 

membuat file bernama 'absen.txt', yang didalamnya akan terdapat daftar hadir perkuliahan. Dengan 

memakai  method write(), kita bisa menambahkan isi pada  file 'absen.txt', dan yang akan kita 

isikan yaitu  teks.  Method ini  memerlukan parameter sebuah  string yang akan ditulis  di lokasi 

tertentu pada file berdasarkan posisi pointer file berada. 

listing : file_2.py 

try:

    sebuah_file = open("absen.txt", 'w')

    print "nama file yang tadi dibuat : ", sebuah_file.name

    print "mode pembacaan file : ", sebuah_file.mode

    print "apakah filenya udah ditutup ? : ", sebuah_file.closed

    sebuah_file.write('1. Jajang Surahman, Teknik Informatika, ITENAS\n')

    sebuah_file.write('2. Angel Corine, Manajemen Informatika, UNIKOM\n')

    sebuah_file.write('3. Samsul Basri, Ilmu Komputer, UPI\n')

    sebuah_file.close()

    print "apakah filenya udah ditutup ? : ", sebuah_file.closed

77

except IOError, e:

    print "proses gagal sebab  : ", e

sesudah  kita menambahkan isi pada  file teks yang kita buat, kita dapat membuka  file yang telah 

dibuat dengan teks editor dan dapat melihat isi dari file ini . 

<< ___________ 9.2 hasil  eksekusi file_2.py  >>

Membaca Isi File

sesudah  mengisi file dengan method write(). Sekarang kita akan memakai  method read() untuk 

membaca file. Pastikan, file yang akan dibaca harus dalam mode 'r', jika tidak dalam mode ini , 

misal dalam mode 'w', maka akan muncul  error : ”OError: File not open for reading”. lalu  

untuk mengetahui posisi pointer file berada, kita gunakan method tell().

listing : file_3.py 

try:

    sebuah_file = open("absen.txt", 'r')

    print "nama file yang tadi dibuat : ", sebuah_file.name

    print "mode pembacaan file : ", sebuah_file.mode

    print "apakah filenya udah ditutup ? : ", sebuah_file.closed

    print "isi file : \n", sebuah_file.read()

    print "posisi pointer pada file : ", sebuah_file.tell()

    sebuah_file.close()

    print "apakah filenya udah ditutup ? : ", sebuah_file.closed

except IOError, e:

    print "proses gagal sebab  : ", e

78

Dengan  memakai   method read(),  kita  dapat  melihat  isi  dari  file ini .  Tapi  method ini 

membaca sekaligus isi file yang dibaca, tidak perbaris. Jika pembacaan dilakukan sekaligus, ruang 

memori yang dibutuhkan jauh lebih besar daripada  file yang dibaca perbaris. lalu  dengan 

adanya method tell(), kita bisa mengetahui posisi  pointer file berada dimana, agar mempermudah 

saat manipulasi file.

<< ___________ 9.3 hasil eksekusi  file_3.py  >>

Membaca Isi File dengan Cara Baris Per Baris

Jika pada contoh sebelumnya pembacaan file dilakukan sekaligus, pada contoh kali ini pembacaan 

file akan dilakukan baris perbaris. Pembacaan file teks dengan membaca perbaris ini bisa dilakukan 

dengan  memakai   pengulangan  for.  File ini  diperlakukan  layaknya  list yang  digunakan  di 

pengulangan for. Disini file dianggap sebagai list yang berisi elemen string.

listing : file_4.py 

try:

    sebuah_file = open("absen.txt", 'r')

    print "nama file yang tadi dibuat : ", sebuah_file.name

    print "mode pembacaan file : ", sebuah_file.mode

    print "apakah filenya udah ditutup ? : ", sebuah_file.closed

    print "isi file : \n"

    for line in sebuah_file:

        print line

79

    print "posisi pointer pada file : ", sebuah_file.tell()

    sebuah_file.close()

    print "apakah filenya udah ditutup ? : ", sebuah_file.closed

except IOError, e:

    print "proses gagal sebab  : ", e

Hasil yang diperlihatkan hampir sama dengan contoh sebelumnya hanya saja teknik pembacaannya 

sedikit  berbeda.  Jika  file berukuran besar,  akan lebih bijak jika kita membacanya perbaris  agar 

ruang memori yang digunakan tidak banyak terpakai.

<< ___________ 9.4 hasil  eksekusi file_4.py  >>

Mengatur Posisi Pointer File

Suatu saat kita ingin mengisi file di lokasi tertentu di sebuah file. Biasanya kita menambahkan file 

di bagian akhir file, atau membaca file selalu dibagian awal file. Ada saatnya kita ingin membaca di 

posisi ke 15 dari awal file, atau posisi -15 karakter dari  pointer file. Di objek file terdapat method 

yang dinamakan seek(). Method ini  memiliki dua buah paramater yaitu jarak yang diinginkan 

dan  patokan jarak ini . Jika parameter kedua diisi oleh angka 0, berarti patokan berada di awal 

file. Jika parameter kedua  diisi oleh angka 1, berarti patokan berada di tempat pointer file berada. 

Jika parameter kedua diisi oleh angka 2, maka patokan berada di bagian akhir file. Jika parameter 

pertama diisi angka positif maka penentuan jarak akan dihitung ke sebelah kanan, jika diisi angka 

negatif maka penentuan jarak akan dihitung ke sebelah kiri.

listing : file_5.py 

try:

    sebuah_file = open("absen.txt", 'rb')

    print "nama file yang tadi dibuat : ", sebuah_file.name

    print "mode pembacaan file : ", sebuah_file.mode

80

    print "apakah filenya udah ditutup ? : ", sebuah_file.closed

    print "isi file : \n"

    for line in sebuah_file:

        print line

    print "posisi pointer pada file : ", sebuah_file.tell()

    print "kembali lagi ke awal : ", sebuah_file.seek(0, 0)

    print "isi file : \n"

    for line in sebuah_file:

        print line

    print "posisi pointer pada file : ", sebuah_file.tell()

    sebuah_file.close()

    print "apakah filenya udah ditutup ? : ", sebuah_file.closed

except IOError, e:

    print "proses gagal sebab  : ", e

Pada contoh diatas, pointer file dipindahkan kembali ke posisi awal. Dengan memberikan jarak 0, 

dan menentukan patokan di awal file, maka posisi pointer file pindah ke bagian awal file. Dengan 

demikian file bisa dibaca ulang untuk kedua kalinya.

<< ___________ 9.5 hasil eksekusi  file_5.py  >>

81

Mengganti Nama File

Dalam manipulasi  file, terdapat operasi seperti pengubahan nama file, memindahkan file, ataupun 

menghapus  file.  Python  sendiri  menyediakan  module  os yang  didalamnya  terdapat  fitur-  fitur 

ini .  Sebagai  contoh  pertama  kita  akan  mengganti  nama  file dari  “absen.txt”  ke  “daftar-

hadir.txt”. Pertama kita harus meng-import modul  os. lalu  kita gunakan  method rename(). 

Method ini  memiliki dua parameter yaitu nama file yang akan diubah namanya, dan nama baru 

yang diinginkan.

listing : file_6.py 

import os

try:

    os.rename('absen.txt', 'daftar-hadir.txt')

    print "Nama file sudah diubah.."

except (IOError, OSError), e:

    print "proses error sebab  : ", e

sesudah  kode diatas dijalankan, coba lihat file yang sebelumnya “absen.txt” akan berubah menjadi 

“daftar-hadir.txt”.

<< ___________ 9.6 hasil  eksekusi file_6.py  >>

Menghapus File

Contoh lainnya yaitu  menghapus file. Kita bisa gunakan method remove() untuk menghapus file 

yang diinginkan. Parameter yang dibutuhkan yaitu  nama file yang akan dihapus.

listing : file_7.py 

82

import os

try:

    os.remove('daftar-hadir.txt')

    print "File sudah dihapus.."

except (IOError, OSError), e:

    print "proses error sebab  : ", e

lalu  jika file sudah dihapus, kita tidak dapat membuka file ini . sebab  file ini  sudah 

hilang dari penyimpanan sekunder.

<< ___________ 9.7 hasil  eksekusi file_7.py  >>

Untuk contoh – contoh lainnya Anda bisa membuka dokumentasi resmi Python, atau coba kunjungi 

beberapa website yang ada di lampiran – 2. 

83

10. Pengenalan Class

Membuat Class dan Object

Pemrograman  berorientasi  objek  atau  dalam  bahasa  inggris  dikenal  dengan  Object  Oriented 

Programming (OOP),  merupakan  sebuah  paradigma  pemrograman  dimana  kita  memodelkan 

perangkat  lunak  kita  dari  berbagai  kumpulan  objek  yang  saling  berinteraksi.  Objek  ini  

memiliki  karakteristik  dan  aksi.  Di  dalam  OOP,  karakteristik  ini   berupa  variabel  yang 

dinamakan atribut. lalu  aksi yang dimiliki objek ini  berupa method yang menghasilkan 

output  atau  cuma melakukan aksi  saja  tanpa  output.  Ada istilah  lain  juga  yang menyebut  aksi 

sebuah  objek  sebagai  perilaku  atau  behaviour.  Objek  itu  sendiri  memiliki   template yang 

diistilahkan dengan kelas atau  class. Sebuah kelas merupakan  template bagi objek – objek yang 

akan dibuat. Proses pembuatan objek baru dinamakan dengan instansiasi.

Ada  beberapa  hal  yang  harus  diingat  dalam  membuat  sebuah  kelas.  Pertama  keyword class, 

keyword ini  digunakan  untuk  mendefinisikan  sebuah  kelas.  Disusul  dengan  nama  kelas  yang 

diinginkan dan tanda titik dua. Blok kode kelas ini  ditulis sesudah  tanda titik dua ini , dan 

seperti biasa diperlukan indentasi agar blok kode yang kita tulis masuk kedalam blok kode kelas. 

Kedua  yaitu   konstruktor,  di  Python  konstruktor  ditulis  dengan  sebuah  function bernama 

__init__() .  Method dan  function sebenarnya sama, hanya saja beda istilah pada paradigma OOP. 

Method __init__()  ini  merupakan  method yang  akan  selalu  dieksekusi  saat  instansiasi  objek. 

Biasanya __init__() digunakan untuk mengisi variabel dengan nilai awal pada atribut – atribut yang 

dimiliki objek. Ketiga yaitu   keyword self,  keyword ini  digunakan pada  method yang akan 

dinyatakan  sebagai  method dari  kelas  yang  kita  rancang.  Keyword ini  disertakan  di  parameter 

pertama. Jika method ini  tidak disertakan self pada method yang dimiliki kelas ini , akan 

muncul error : “TypeError: nama_function() takes exactly n arguments (1 given)

” yang artinya method ini  tidak bisa dipanggil oleh objek yang telah terinstansiasi.

Sebagai contoh disini kita akan membuat sebuah kelas bernama PersegiPanjang yang memiliki dua 

atribut yaitu panjang dan lebar. Kelas ini memiliki lima method yang terdiri dari : 

   __init__(), konstruktor kelas persegi panjang

   hitung_luas(), method untuk menghitung luas persegi panjang

   hitung_keliling(), method untuk menghitung keliling persegi panjang

   ____________persegi_panjang(), meng___________ persegi panjang yang direpresentasikan dengan 

kumpulan bintang.

   ____________persegi_panjang_tanpa_isi(), meng___________ persegi panjang tetapi hanya batas 

luarnya saja, isinya tak di___________.

listing : class_1.py 

84

class PersegiPanjang:

    

    def __init__(self, panjang, lebar):

        self.panjang = panjang

        self.lebar = lebar

    

    def hitung_luas(self):

        return self.panjang * self.lebar

    

    def hitung_keliling(self):

        return (2*self.panjang) + (2*self.lebar)

    def ____________persegi_panjang(self):

        for i in range(0, self.lebar):

            for j in range(0, self.panjang):

                print '*',

            print ""

    

    def ____________persegi_panjang_tanpa_isi(self):

        for i in range(0, self.lebar):

            if i > 0 and i < self.lebar-1:

                for j in range(0, self.panjang):

                    if j > 0 and j < self.panjang-1:

                        print '  ',

                    else:

                        print '*',

            else:

                for j in range(0, self.panjang):

                    print '*',

                    

            print ""

    

    

PersegiPanjangA = PersegiPanjang(20, 10)

PersegiPanjangB = PersegiPanjang(10, 5)

print "Panjang persegi panjang A :", PersegiPanjangA.panjang

print "Lebar persegi panjang A :", PersegiPanjangA.lebar

print "Luas persegi panjang A : ", PersegiPanjangA.hitung_luas()

print "Keliling persegi panjang A : ", PersegiPanjangA.hitung_keliling()

print "Meng___________ Persegi Panjang A : "

PersegiPanjangA.____________persegi_panjang()

print "\nMeng___________ Persegi Panjang A hanya tepinya saja : "

PersegiPanjangA.____________persegi_panjang_tanpa_isi()

print "\n"

print "Panjang persegi panjang B :", PersegiPanjangB.panjang

print "Lebar persegi panjang B :", PersegiPanjangB.lebar

print "Luas persegi panjang B : ", PersegiPanjangB.hitung_luas()

85

print "Keliling persegi panjang B : ", PersegiPanjangB.hitung_keliling()

PersegiPanjangB.____________persegi_panjang()

print "\nMeng___________ Persegi Panjang B hanya tepinya saja : "

PersegiPanjangB.____________persegi_panjang_tanpa_isi()

Proses instansiasi dilakukan dengan menentukan nama objek yang diinginkan lalu  panggil 

nama kelas yang akan diinginkan dan masukan parameter awal yang dibutuhkan. lalu  saat 

objek berhasil dibuat, kita bisa mengakses atribut dan method dari objek ini . Seperti yang kita 

lakukan  pada  manipulasi  file,  kita  bisa  mengakses  method close(),  write(),  dan  read()  serta 

mengakses atribut close,  name, dan mode. Dengan parameter berbeda namun karakterisitik sama, 

persegi panjang yang dihasilkan jadi beragam. 

Tujuan dari OOP ini sendiri,  menghemat  penulisan kode program yang kita buat. Tanpa OOP kita 

harus membuat atribut untuk setiap objek. Dan penulisan kode program pun menjadi menumpuk, 

sebab  untuk method yang sama harus di t


Lebih baru Lebih lama