Tujuan
pembuatan fungsi adalah mempersingkat penulisan suatu blok program yang dipakai
berulang-ulang.
Misalnya
pada program berikut :
print
"-" * 10
print
"Setiap pesan diawali garis."
print
"-" * 10
print
"Juga diakhiri garis."
print
"-" * 10
Tampak
dalam script di atas bahwa
print
"-" * 10
ditulis
berulang-ulang.
Contoh
berikut akan kita ganti dengan pemanggilan fungsi:
# Deklarasi
fungsi
def
garis():
print "-" * 10
# Program
utama
garis()
print
"Setiap pesan diawali garis."
garis()
print
"Juga diakhiri garis."
garis()
def
menyatakan awal deklarasi suatu fungsi. Perhatikan posisi kolom
source fungsi di atas yang menjorok ke dalam.
Nilai Masukan
Fungsi
tersebut dikatakan fungsi statis karena ia tidak bisa menerima _masukan_ dari
baris program yang memanggilnya. Misalkan kita ingin membuat garis dengan
panjang berbeda-beda namun fungsi yang digunakan tetap sama.
def garis(n):
print "-" * n
garis(10)
print
"Setiap pesan diawali garis."
garis(3)
print
"Juga diakhiri garis."
garis(10)
Fungsi juga
dapat menerima masukan lebih dari satu. Misalkan karakternya bisa
diganti-ganti, tidak hanya "-".
def
garis(k,n):
print k * n
garis("-",10)
print
"Setiap pesan diawali garis."
garis(".",3)
print
"Juga diakhiri garis."
garis("*",10)
Nilai Keluaran – return
Fungsi juga
dapat mengembalikan suatu nilai sebagaimana yang pernah kita temui pada len(),
range(), dan random() sebelumnya.
return
digunakan untuk tujuan tersebut.
def
garis(k,n):
return k * n
print
garis("-",10)
print
"Setiap pesan diawali garis."
print
garis(".",3)
print
"Juga diakhiri garis."
print
garis("*",10)
Sebagai
tambahan, perintah lain di bawah baris return (masih dalam fungsi yang sama)
tidak akan diproses, sebagaimana baris mubazir yang terdapat pada contoh
berikut ini:
def
garis(k,n):
return k * n
print "Selesai"
Baris print
"Selesai" tidak akan dijalankan karena sudah didahului oleh return yang
menyebabkan proses keluar dari fungsi.
Fungsi yang
tidak menggunakan return sebenarnya tetap mengembalikan nilai, yaitu None. None
merupakan objek hampa.
Memanggil Dirinya
Rekursif
adalah istilah untuk fungsi yang memanggil dirinya sendiri.
Contohnya
pada fungsi faktorial() berikut ini:
def
faktorial(n):
if n <= 1: return 1
else: return n * faktorial(n-1)
print
faktorial(5)
KEPEMILIKAN VARIABEL
Rekursif
memang membuat algoritma menjadi lebih pendek. Namun perlu dingat teknik ini
tergolong lebih boros memori. Jadi sebisa mungkin tetap gunakan perulangan.
Namun jika algoritma menjadi terlalu rumit silahkan terapkan rekursif.
Fungsi
dapat mengenal variabel yang dibuat pada blok utama. Sedangkan tidak
sebaliknya.
def
hurufDalamNama():
huruf = {}
for h in nama:
if huruf.has_key(h):
jml = huruf[h] + 1
else:
jml = 1
huruf.update( {h:jml} )
return huruf
nama =
raw_input("Nama Anda: ")
print
hurufDalamNama()
Variabel
nama dibuat pada blok utama, namun dapat dikenal oleh fungsi di atas. Namun blok utama tidak
dapat mengenal variabel yang dibuat di dalam fungsi tersebut. Sehingga kalau
Anda mencoba menambahkan baris berikut pada akhir
program:
print huruf
akan tampil
pesan kesalahan:
Traceback
(innermost last):
File "kepemilikan.py", line 13,
in ?
print huruf
NameError:
huruf
Sehingga
dikatakan kalau huruf dimiliki oleh fungsi hurufDalamNama().
hurufDalamNama()
adalah fungsi yang mengembalikan dictionary sebagai keluarannya.
Fungsi Interpreter - exec()
exec()
adalah fungsi interpreter yang akan menerjemahkan string sebagai perintah
Python.
>
> > exec("a = 5")
>
> > a
5
Berikut ini
program kalkulator yang akan berhenti bila hanya tombol Enter saja yang
ditekan.
from math
import *
while 1:
r = raw_input("x = ")
if r == "":
break
exec("x = " + r)
print x
x = 8*3
24
x = 7+3
10
x = sin(45)
0.850903524534
x =
pi*(10**2)
314.159265359
No Response to "Fungsi pada python"
Posting Komentar