Dasar-Dasar Python (Basic 2)
WhiteCyber Research & Development Team kembali melanjutkan tutorial Python yang sebelumnya, bagi yang belum mempraktikkan silahkan dipraktikkan terlebih dahulu tutorial yang kemarin.
Pendahuluan
Untuk
menyelesaikan masalah yang kompleks menggunakan perangkat lunak, kasus utama
harus dipecah-pecah menjadi kasus yang lebih kecil. Kemudian
kita berkonsentrasi untuk mencari pemecahan yang terbaik dari masing-masing
bagian kecil ini. Masing-masing bagian diselesaikan
dengan menggunakan algoritma sebaik mungkin. Bagian-bagian
kecil ini pada akhirnya bisa kita gabungkan untuk memberikan jawaban yang
optimal terhadap masalah yang kita hadapi.
Fungsi dipakai untuk mengumpulkan beberapa
perintah yang sering dipakai dalam sebuah program. Dengan
memakai fungsi, program yang kita buat menjadi lebih terstruktur. Lebih mudah
diikuti oleh orang lain yang membaca program kita. Dan yang paling penting adalah mempersingkat waktu yang kita
perlukan untuk mengembangkan suatu perangkat lunak. Karena perangkat
lunak yang kita buat, bisa jadi memakai komponen-komponen yang sama.
Seperti layaknya sebuah bahasa pemrograman,
Python juga memberikan fasilitas pembuatan fungsi yang sangat bagus.
Konsep fungsi dalam Python sama dengan bahasa
pemrograman C/C++. Python menganggap fungsi dan prosedur adalah sesuatu
yang sama, dalam artian cara mendeklarasikan fungsi dan prosedur
adalah sama. Hanya bedanya, kalau fungsi mengembalikan suatu nilai
setelah
proses sedangkan prosedur tidak.
Mendeklarasikan dan Memakai Fungsi
Pernyataan def dipakai untuk mendeklarasikan fungsi. Sedangkan
pernyataan return dipakai untuk
mengembalikan suatu nilai kepada bagian program yang memanggil fungsi. Bentuk
dasar untuk mendeklarasikan fungsi adalah sebagai berikut:
def nama_fungsi(arg1, arg2, arg3,...,argN):
perintah-perintah
return nilai_balik
Contoh implementasi yang mudah, misalnya kita ingin membuat
fungsi perkalian dua bilangan bulat:
def perkalian(x, y):
z = x * y
return z
Pernyataan def
mendefinisikan sebuah fungsi dengan nama perkalian. Paramater-parameter yang akan dilewatkan ke dalam fungsi didaftarkan dalam tanda
kurung. Masing-masing paramater dipisahkan oleh koma (,). Baris
deklarasi fungsi ini diakhiri dengan titik dua (:). Tanda ini memberitahukan pada
interpreter Python bahwa baris ini masih berlanjut pada baris-baris berikutnya.
Perhatikan dua baris pernyataan
terindentasi yang mengikutinya. Dalam Python semua
pernyataan yang diindentasi dalam satu tingkatan indentasi adalah
pernyataan-pernyataan yang satu derajat. Artinya semua pernyataan
tersebut akan dieksekusi sesuai dengan urutan
penulisannya. Dalam kasus contoh kita, pernyataan z = x + y dan return z
adalah satu tingkatan. Kedua pernyataan ini adalah anggota
dari deklarasi fungsi perkalian.
Keduanya akan dijalankan saat fungsi dipanggil.
Untuk memanggil fungsi yang telah dibuat adalah dengan cara menyebutkan nama fungsi yang bersangkutan beserta
daftar parameter yang sebenarnya:
print perkalian(10,8)
print perkalian(15,5)
Dalam deklarasi fungsi, Anda juga bisa
menambahkan komentar-komentar yang memberi penjelasan mengenai fungsi yang
dibuat. Secara umum kita memang bisa menambahkan
komentar-komentar di sembarang tempat dalam program yang kita buat. Baris-baris komentar diawali dengan karakter pagar (#). Semua karakter yang mengikuti
tanda ini sampai akhir baris dianggap sebagai komentar dan tidak akan mempengaruhi jalannya progam.
Akan tetapi terdapat satu gaya pemberian komentar dalam
Python yang disebut dengan docstring. Biasanya dipakai
untuk memberi penjelasan mengenai fungsi atau objek. Docstring
diapit dengan tanda petik ganda. Komentar jenis ini
hanya boleh diberikan tepat satu baris dibawah deklarasi fungsi atau objek,
seperti ditunjukkan pada di bawah ini.
def perkalian(x, y):
"Mengalikan dua bilangan"
z = x * y
return z
# program utama mulai di sini
print perkalian(10,8)
print perkalian(15,5)
Docstring
sangat bermanfaat ketika kita ingin mendokumentasikan semua fungsi dan kelas
yang telah kita buat. Karena ada beberapa
perangkat lunak yang mampu membuat dokumentasi berdasarkan docstring yang ada
dalam source code.
Scope Variabel dalam Fungsi
Untuk
menjelaskan konsep scope variabel dalam fungsi, lihatlah skrip di bawah ini
# fungsi mulai di sini
def swap(x, y):
print "Dalam fungsi:"
print "\tSebelum proses:"
print "\t\tNilai x", x
print "\t\tNilai y", y
z = x
x = y
y = z
print "\tSetelah proses:"
print "\t\tNilai x", x
print "\t\tNilai y", y
# program utama mulai di sini
x = 12
y = 3
print "Sebelum memanggil fungsi, x bernilai", x
print "Sebelum memanggil fungsi, y bernilai", y
swap(x,y)
print "Setelah memanggil fungsi, x bernilai", x
print "Setelah memanggil fungsi, y bernilai", y
Dalam lingkungan program utama variabel x dan y
diisi dengan nilai 12 dan 3, secara berurutan. Ketika program utama
memanggil fungsi swap nilai
variabel ini disalin kedalam variabel x
dan y dalam lingkungan fungsi,
yang kebetulan sama namanya dengan nama variabel dalam
progam utama. Python akan membuat alokasi memori
tersendiri untuk fungsi. Karena alokasi memorinya berbeda, maka perubahan yang
terjadi pada variabel dalam fungsi, katakanlah x,
tidak akan mengubah variabel x yang terdapat dalam program utama. Jadi
bisa dikatakan variabel x dalam
fungsi swap hanya mempunyai
scope dalam fungsi itu sendiri. Pernyataan ini bisa
dibuktikan dengan menjalankan skrip tersebut. Hasilnya
sebagai berikut. Variabel program utama tetap
nilainya, meskipun variabel dalam fungsi swap
berubah nilainya.
Sebelum memanggil fungsi, x bernilai 12
Sebelum memanggil fungsi, y bernilai 3
Dalam fungsi:
Sebelum proses:
Nilai x 12
Nilai y 3
Setelah proses:
Nilai x 3
Nilai y 12
Setelah memanggil fungsi, x bernilai 12
Setelah memanggil fungsi, y bernilai 3
Melewatkan Argumen dengan Kata Kunci
Kalau kita perhatikan kembali fungsi perkalian sebelumnya, proses penyalinan ke
variabel lokal sesuai dengan urutan deklarasi fungsi yang kita panggil.
Jika fungsi perkalian kita
panggil dengan memberi pernyataan perkalian(10,8),
maka nilai 10 akan disalin ke variabel x
dan nilai 8 ke variabel y.
Kadang-kadang ini agak menyulitkan jika kita membuat fungsi dengan jumlah
variabel yang cukup banyak, sementara urutannya harus tepat. Solusinya
adalah dengan menyebutkan kata-kunci (keyword) yang kita pakai pada saat
mendefinisikan fungsi.
Kita ubah sedikit program perkalian kita agar
pembahasan di bagian ini lebih jelas. Perhatikan program
di bawah.
def perkalian(x, y):
"Mengalikan dua bilangan"
z = x * y
print "Nilai x =",x
print "Nilai y =",y
print "x * y =",z
# program utama mulai di sini
perkalian(10,2)
print
perkalian(y=15,x=5)
Hasilnya:
Nilai x = 10
Nilai y = 2
x * y = 20
Nilai x = 5
Nilai y = 15
x * y = 75
Dengan menyebutkan kata kunci yang kita
buat saat mendeklarasikan program kita dapat mengubah urutan penyalinan
argumen. Akan tetapi Anda harus berhati-hati ketika
menyebutkan kata-kunci, karena tidak boleh ada duplikasi. Panggil fungsi
perkalian dengan pernyataan perkalian(15,x=5), maka Anda akan mendapatkan pesan
kesalahan sbb.:
Traceback (innermost last):
File "./listing8.py", line 13, in ?
perkalian(15,x=5)
TypeError: keyword parameter redefined
Hasil ini menunjukkan pada kita bahwa nama
x sudah dipakai. Dengan melihat
pada definisi fungsi yang telah dibuat, parameter pertama adalah x dan kedua adalah y. Jadi ketika kita panggil dengan
menyebutkan parameter kedua sebagai x
juga akan terjadi kesalahan.
Nilai Awal Argumen
Dalam proses interaksi dengan pengguna program kadangkala
program memberikan pilihan tertentu, yang sering disebut dengan nilai bawaan (default).
Nilai awal argumen ini bisa kita berikan saat kita membuat
definisi fungsi. Lihat cara mendeklarasikan
nilai awal argumen ini:
def login(username="guest", password="salmanas@programmer.net"):
print "Your username ",username
print "Your password ",password
print
login()
login("tamu")
login("tamu", "katakunci")
Sekarang proses pemanggilan fungsi tidak perlu menyebutkan
argumennya secara lengkap, jika kita tidak perlu mengubah nilai default yang
telah diberikan.
Your username guest
Your password salmanas@programmer.net
Your username tamu
Your password salmanas@programmer.net
Your username tamu
Your password katakunci
Dengan membandingkan antara isi program dan
hasilnya di atas, dapat kita simpulkan bahwa penyalinan argumen tetap mengikuti
kaidah urutan pada saat dideklarasikan.
Anda tidak diperbolehkan mendefinisikan fungsi seperti ini:
def login(username="guest", password):
print "Your username ",username
print "Your password ",password
print
Akan tetapi Anda bisa mendeklarasikan
fungsi seperti potongan program berikut.
def login(username, password="salmanas@programmer.net"):
print "Your username ",username
print "Your password ",password
print
Jadi nilai default hanya boleh diberikan kepada deretan akhir parameter. Setelah pemberian nilai default, semua parameter di belakangnya juga harus diberi nilai default. Satu catatan, nilai awal argumen akan dievaluasi pada saat dideklarasikan. Perhatikan contoh berikut.
usernm="guest"
passwd="salmanas@programmer.net"
def login(username=usernm, password=passwd):
print "Your username ",username
print "Your password ",password
print
usernm="tamu"
passwd="oranglain@mailserver.dev"
login()
Hasilnya:
Your username guest
Your password salmanas@programmer.net
Jumlah Argumen yang Berubah
Terdapat dua lambang khusus dalam
Python untuk menerima argumen dengan jumlah yang berubah-ubah. Lambang pertama adalah *nama_argumen.
Dengan memakai lambang ini pada deklarasi fungsi, Python akan
mengenali argumen selain argumen formal sebagai tuple. Lihat kode berikut ini:
def guest(name, password, *hobby):
print "Your name :",name
print "Your password:",password
print "Hobby Anda :",hobby
guest("tamu", "katakunci", "memancing", "membaca", "olahraga")
Hasilnya:
Your name : tamu
Your password: katakunci
Hobby Anda : ('memancing', 'membaca', 'olahraga')
Untuk memanggil fungsi yang mempunyai
deklarasi seperti ini, kita cukup memberikan daftar argumen seperti argumen
biasa.
Lambang kedua adalah **nama_argumen. Dengan lambang ini
argumen yang diterima oleh fungsi akan dikenali
sebagai dictionary. Lihat contoh berikut:
def guest(name, password, **other):
print "Your name :",name
print "Your password:",password
print "Lain-lain :",other
guest("tamu", "katakunci", sex="laki-laki", umur=18, hobby="membaca")
Hasilnya:
Your name : tamu
Your password: katakunci
Lain-lain : {'sex': 'laki-laki', 'hobby': 'membaca', 'umur': 18}
Untuk memanggil fungsi dengan deklarasi
seperti ini, kita harus menyebutkan daftar argumen beserta kata-kuncinya.
Jika Anda ingin menggunakan dua lambang
ini secara bersamaan Anda harus mendahulukan *nama_argumen
daripada **nama_argumen.
def guest(name, password, *hobby, **other):
print "Your name :",name
print "Your password:",password
print "Hobby Anda :",hobby
print "Lain-lain :",other
guest("tamu", "katakunci", "single", "membaca", sex="laki-laki", umur=18)
Hasil eksekusi program:
Your name : tamu
Your password: katakunci
Hobby Anda : ('single', 'membaca')
Lain-lain : {'sex': 'laki-laki', 'umur': 18}
Sampai di sini bagian kedua telah selesai. Untuk mempelajari lebih jauh lagi tunggu bagian tutorial berikutnya.
Tutorial ini resmi dari :
Salman AS tinggal di Depok dan bekerja di
Nurulfikri Cipta Solusi, Jakarta. Juga
mengajar HTML, PHP, MySQL, Linux di Nurulfikri Computer & Statistics. Meski
menggunakan PHP dan MySQL untuk pemrograman Web, namun memakai Python untuk
skripting umum. Dapat dihubungi di salmanas@programmer.net.
0 comments:
Posting Komentar
PEDOMAN KOMENTAR
Ayo berpartisipasi membangun budaya berkomentar yang baik. Pantang bagi kita memberikan komentar bermuatan menghina atau spam.
Kolom komentar tersedia untuk diskusi, berbagi ide dan pengetahuan. Hargai pembaca lain dengan berbahasa yang baik dalam berekspresi. Setialah pada topik. Jangan menyerang atau menebar kebencian terhadap suku, agama, ras, atau golongan tertentu.
Bangun sharing ilmu dengan berkomentar disini :