Fungsi pada python



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

Anda dapat menuliskan rumus matematika sesuai dengan ketentuan Python. Bahkan modul math sudah disertakan, memudahkan penggunaan fungsi tambahan.

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


Supported by Doteasy.com -The Free Web Hosting Provider
Wordpress Theme by Graph Paper Press

Copyright 2010 by Work-a-holic Blogger Template.
Blogger Template by Blogspot Templates