Function
Fungsi (Function) adalah suatu program terpisah dalam blok sendiri yang berfungsi sebagai sub-program (modul program) yang merupakan sebuah program kecil untuk memproses sebagian dari pekerjaan program utama. Sederhananya fungsi merupakan blok kode tersusun dalam suatu program, yang mana kita dapat memanggilnya berulang kali untuk melakukan perintah yang kita buat.
Beberapa point yang bisa kita gunakan dengan fungsi, diantaranya :
- Program besar dapat di pisah-pisah menjadi program-program kecil melalui function.
- Kemudahan dalam mencari kesalahan-kesalahan karena alur logika jelas dan kesalahan dapat dilokalisasi dalam suatu modul tertentu.
- Memperbaiki atau memodifikasi program dapat dilakukan pada suatu modul tertentu saja tanpa menggangu keseluruhan program.
- Dapat digunakan kembali (Reusability) oleh program atau fungsi lain.
- Meminimalkan penulisan perintah yang sama.
Di Python sebuah `function` dapat dipasang di dalam sebuah `class`, sehingga istilahnya berubah menjadi `method`. Sedangkan function yang tidak berada di dalam class tetap disebut function. Python membedakan fungsi dalam beberapa kategori :
Programme-Defined Function
`Programme-Defined Function` adalah function yang dibuat oleh programmer sendiri. Function ini memiliki nama tertentu yang unik dalam program, letaknya terpisah dari program utama, dan bisa dijadikan satu ke dalam suatu library buatan programmer itu sendiri.
Standard Library Function
`Standard Library Function` adalah fungsi-fungsi yang telah disediakan oleh Interpreter Python dalam file-file atau library-nya. Misalnya: `raw_input()`, `input()`, `print()`, `open()`, `len()`, `max()`, `min()`, `abs()`, dll.
Lambda
Lambda
dalam python lebih dikenal dengan nama Anonymous Function (Fungsi yang tidak disebutkan namanya). Lambda bukanlah sebuah perintah (statemen) namun merupakan sebuah ekspresi (expression). Menciptakan sebuah fungsi yang akan dipanggil nanti, tapi mengembalikan fungsi bukan untuk menetapkan nama.
Rekursif
Fungsi Rekursif adalah Suatu fungsi yang memanggil dirinya sendiri. Artinya, fungsi tersebut dipanggil di dalam tubuh fungsi itu sendiri. Tujuan di lakukan rekursif adalah untuk menyederhanakan penulisan program dan menggantikan bentuk iterasi. Dengan rekursi, program akan lebih mudah dilihat.
Pembuatan fungsi
Dalam python terdapat dua perintah yang dapat digunakan untuk membuat sebuah fungsi, yaitu `def` dan `lamda`.
def
`def` Adalah perintah standar dalam python untuk mendefinisikan sebuah fungsi. Tidak seperti function dalam bahasa pemrograman compiler seperti C/C++, `def` dalam python merupakan perintah yang executable, bentuk Umum dari def adalah:
def <nama_fungsi>(argumen, atau, parameter, …,argN) :
<statemen-statemen>
return
Bentuk umum fungsi yang memiliki statement return yang digunakan untuk mengembalikan suatu nilai kepada bagian program yang memanggil fungsi :
def <nama_fungsi>(arg1, arg2, arg3, ...,argN) :
"string dokumentasi" #bersifat opsional
<statement-statement>
.....
return <nilai_balik>
Contoh dalam bentuk kode
def maks(a, b):
"Memperoleh bilangan terbesar dari a dan b"
if a > b:
return a
else:
return b
penjelasan dari kode diatas :
- fungsi `maks` memiliki 2 buah parameter, masing-masing bernama `a` dan `b`.
- `"Memperoleh bilangan terbesar dari a dan b"` baris ini digunakan untuk keperluan dokumentasi.
- Pernyataan `if a > b:` digunakan untuk memperoleh bilangan terbesar. Kalau nilai `a` lebih besar daripada nilai `b` maka fungsi diakhiri melalui `return` dengan nilai balik berupa `a`. Untuk keadaan sebaliknya nilai balik berupa `b`.
Pada fungsi tipe data yang dikembalikan bisa berbagai macam jenis tipe data yang didukung Python. Begitupun parameter yang akan diterima oleh function tersebut. Sebagai contoh mari kita buat file `coba_fungsi.py` dengan berbagai function seperti pada kode berikut:
def hello():
print "Hello world"
def getDBConfig():
config = {
"driver":"sqlite3",
"name":"testing.db",
"path":"/home/user/Documents"
}
return config
def getName(id):
if id == 1:
name = "Alexander Grotesqiue"
elif id == 2:
name = "Saleh Mahmoud Al Qassam"
elif id == 3:
name = "Natasha Vorvanova"
return name
def getHargaDealer(harga):
harga_baru = harga + ((harga / 100.0) * 15.0)
return harga_baru
def getNumberList(length):
x = range(0, length)
return x
def getLuasPersegiPanjang(p, l):
x = p * l
return x
Pada kode diatas, kita membuat berbagai function yang terdiri dari:
- `hello()`, parameter tidak ada dan tidak mengembalikan nilai apapun
- `getDBConfig()`, parameter tidak ada dan mengembalikan nilai berupa dictionary
- `getName()`, parameter cuma satu dan mengembalikan nilai berupa string
- `getHargaDealer()`, parameter cuma satu dan mengembalikan nilai berupa float
- `getNumberList()`, parameter cuma satu dan mengembalikan nilai berpa list
- `getLuasPersegiPanjang()`, parameter ada dua dan mengembalikan nilai berupa integer atau float
jalankan file dengan perintah `python -i coba_fungsi.py` pada interpreter
>>> hello()
Hello world
>>> db_config = getDBConfig()
>>> print db_config
{'path': '/home/user/Documents', 'driver': 'sqlite3', 'name': 'testing.db'}
>>> name = getName(3)
>>> print name
Natasha Vorvanova
>>> harga_dealer = getHargaDealer(1000000)
>>> print harga_dealer
1150000.0
>>> number_list = getNumberList(10)
>>> print number_list
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> luas = getLuasPersegiPanjang(20, 10)
>>> print luas
200
Lambda
lambda
dalam python lebih dikenal dengan nama Anonymous Function(Fungsi yang tidak disebutkan namanya). lambda
bukanlah sebuah perintah (statemen) namun merupakan sebuah ekspresi (expression). Menciptakan sebuah fungsi yang akan dipanggil nanti, tapi mengembalikan fungsi bukan untuk menetapkan nama.
lambda
merupakan method di python untuk melakukan serangkaian fungsi, tanpa perlu mendeklarasikan fungsi terlebih dahulu. Ini memiliki keuntungan karena ketika kita run script, fungsi-fungsi yang ada akan disimpan ke memory terlebih dahulu untuk mempercepat pemanggilan, sedangkan pada lambda fungsi tidak akan disimpan di memory sehingga akan butuh less memory. Biasanya lambda digunakan ketika ingin melakukan suatu fungsi yang sifatnya temporer atau private attr.
Jika ingin membuat function, mengapa harus menggunakan lambda
ketimbang menggunakan def
? untuk membuat function kita tidak harus menggunakan lambda, bahkan kita dapat membuat aplikasi tetap berjalan tanpa harus menggunakan lambda sama sekali. Namun ada situasi tertentu dimana kita akan lebih cocok menggunakan lambda, hal ini dapat memudahkan kita dalam menulis script serta script kita bisa lebih bersih. Situasi tersebut misalnya adalah apabila kita ingin membuat function tanpa nama alias anonymous function, serta apabila kita ingin passing function object ke dalam function lain, atau ketika kita ingin membuat function yang hanya dipanggil sekali saja dalam eksekusi.
Bentuk umum :
lambda argument1, argument2 , argumentN:expression using arguments
Bentuk umum lambda
adalah kata kunci lambda, diikuti oleh satu atau lebih argumen (persis seperti daftar argumen dalam tanda kurung di def header), diikuti oleh ekspresi setelah tanda titik dua :
.
Perbedaan dengan def
:
lambda
adalah sebuah ekspresi, bukan pernyataan. Karena ini, sebuah lambda
dapat muncul di tempat-tempat def
tidak diperbolehkan oleh sintaks Python di dalam pemanggilan fungsi argument. Sebagai ekspresi, lambda
mengembalikan nilai (fungsi baru) yang opsional dapat diberi nama. Sebaliknya, pernyataan def
selalu memberikan fungsi baru ke nama di header, bukannya kembali sebagai hasilnya.
Tubuh lambda
adalah ekspresi tunggal, bukan satu blok statemen. Tubuh lambda
sama dengan apa yang akan dimasukkan ke dalam statemen return dalam tubuh def
. Mungkin sedikit membingungkan antara expression dan statement karena dalam Python suatu expression dapat juga dalam bentuk statement, namun cara termudah untuk membedakannya adalah dengan menganalisanya seperti ini :
Apabila tidak menghasilkan/mengembalikan suatu nilai, maka itu bukanlah expression dan tidak dapat digunakan dalam lambda. Perhatikan contoh statement berikut :
a = b + c
Statement itu dapat disebut dengan assignment statement. Tentu statement semacam itu biasa anda tulis dalam script ketika membuat variabel, nah sisi kanan dari tanda sama-dengan `=` pada statement itulah yg disebut expression `b + c`, dan itu dapat digunakan dalam lambda.
Perbandingan pembuatan function dengan `def` dengan `lambda`. Membuat function yang menghitung penjumlahan dua variabel dengan `def`.
def penjumlahan(x, y): return x + y
print penjumlahan(1, 2)
Membuat function yang menghitung penjumlahan dua variabel dengan lambda.
penjumlahan = lambda x, y: x+y
print penjumlahan(1, 2)
lambda
tidak dapat menerima expression dalam bentuk assignment statement. Dalam Python, assignment statement tidak menghasilkan atau mengembalikan suatu nilai, bahkan tidak juga dengan nilai NULL. Karena itu tidak dapat digunakan dalam lambda. contoh expression yang bisa digunakan dalam lambda adalah operasi matematika, operasi string, operasi list, dan semacamnya.
function adalah expression. Karena itu kita dapat memanggil function lain dalam lambda meskipun function yang kita panggil itu mengembalikan nilai NULL.
conditional expression dapat digunakan dalam lambda. Karena conditional expression menghasilkan suatu nilai, maka dapat digunakan dalam lambda.
Berikut adalah contoh kasus penggunaan lambda pada Python. Menggunakan lambda untuk memanggil function lain.
import math
square_root = lambda x: math.sqrt(x)
square_root(100) # output : 10.0
Rekursif
Fungsi rekursif adalah Suatu fungsi yang memanggil dirinya sendiri. Artinya, fungsi tersebut dipanggil di dalam tubuh fungsi itu sendiri. Tujuan di lakukan rekursif adalah untuk menyederhanakan penulisan program dan menggantikan bentuk iterasi. Dengan rekursi, program akan lebih mudah dilihat.
Pemanggilan Fungsi Pada Python untuk memanggil fungsi digunakan perintah <nama_fungsi>(), contoh :
def fungsiRekursif():
print("Hello, ini fungsi rekursif")
fungsiRekursif()
Contoh fungsi di atas akan menampilkan teks "Hello, ini fungsi rekursif" terus menerus, karena memanggil dirinya sendiri tampa henti. Fungsi rekursif dapat menyelesaikan beberapa persoalan seperti perhitungan bilangan fibbonaci dan faktorial.
Parameter Fungsi, sebuah fungsi dapat memiliki daftar argumen (parameter) ataupun tidak. Parameter fungsi dapat dibedakan menjadi 4, yaitu:
Parameter Posisi adalah parameter fungsi dalam urutan posisi yang benar. Pada saat pemanggilan fungsi maka parameter itu harus sesuai dengan jumlah parameter yang telah didefinisikan. Contoh :
def hitung (a,b) :
c=a+b
return c
hitung (1,2)
# 0utput = 3
Parameter Nama adalah dimana dalam pemanggilan fungsi maka nilai dari parameternya disebutkan langsung pada nama parameternya. Contoh:
def totalTransport(hari, uangTransport):
gaji= hari*uangTransport
return gaji
totalTransport(hari=20,uangTransport=20000)
#Output = 400000
Parameter Default adalah nilai yang diberikan ke parameter saat pendefinisian fungsi, dimana tujuannya apabila pada pemanggilan fungsi, tidak memberikan nilai pada argumen tersebut maka nilai default ini yang akan digunakan. Contoh :
def uang (ratusan, ribuan=5) :
Print “uang ratusannya adalah ; “, ratusan;
Print “uang ribuannya adalah ; “, ribuan;
#Uang(7)
Output : 7 dan 5, walaupun saat pemanggilan tidak menyebutkan nilai untuk argumen kedua, maka nilai defaultnya yang digunakan.
Parameter bertipe List adalah satu parameter yang didahului oleh tanda * Contoh :
def angka(*bilangan) :
Print angka
angka (2,7,9)
#Output : (2,7,9) Untuk pemanggilan fungsi tanpa parameter :
Command = fungsi()
Deklarasi command = def fungsi ()