Belajar Python : Mengenal Fungsi Pada Python

Ketika membuat sebuah program yang cukup kompleks serta memiliki banyak fitur, ada kalanya kita akan menggunakan perintah yang sama secara berulang.

Hal ini tentu saja akan sangat merepotkan jika kita harus menulis berulang kali setiap menggunakan perintah tersebut.

Selain sangat merepotkan ketika menulis program / baris kode, hal ini juga akan sangat menyulitkan ketika suatu saat kita ingin melakukan maintenance program tersebut, kenapa?

Jawabannya adalah karena kode yang kita tulis memiliki sangat banyak baris perintah dan sulit dibaca.

Lalu bagaimana jika kita ingin menggunakan suatu perintah berulang kali secara efektif???

Jawabannya adalah menggunakan Fungsi.

Fungsi membuat baris perintah menjadi reusable, kita hanya perlu mendefinisikan sekali saja dan kita dapat menggunakannya berulang kali tanpa harus menulis baris perintah yang sama.

Dengan fungsi, kita juga dapat memecah suatu program yang besar menjadi bagian-bagian yang lebih kecil.

Apabila program yang kita tulis dalam skala besar maka pengggunaan fungsi dapat membantu kita untuk melakukan maintenance program lebih mudah karena program sudah dalam bagian-bagian yang lebih kecil.

Sebenarnya pada materi variabel pada python kita sudah menggunakan beberapa fungsi bawaan yang disediakan oleh python untuk mengubah tipe data.

Kali ini kita akan belajar bagaimana cara membuat dan menggunakan fungsi pada python sesuai dengan kebutuhan kita.

Oke, mari kita belajar…

Mendefinisikan Fungsi

Pada python, fungsi didefinisikan dengan keyword def yang kemudian diikuti dengan nama fungsi yang akan dibuat.

Berikut format untuk mendefinisikan sebuah fungsi:

def function_name(parameters):
    statement(s)
    return [expression]

Bingung ???

Oke mari kita telaah satu persatu:

  1. keyword def digunakan untuk menyatakan bahwa itu adalah sebuah fungsi pada python.
  2. function_name merupakan nama dari fungsi yang akan kita buat.
  3. parameters atau biasa disebut dengan argumen merupakan input dari luar fungsi yang nantinya akan digunakan atau diproses di dalam blok perintah dari fungsi. Parameter sifatnya tidak wajib. Kita bisa membuat fungsi tanpa parameter, yang artinya fungsi tersebut tidak memiliki input nilai yang akan digunakan.
  4. statement merupakan baris perintah yang dijalankan di dalam fungsi tersebut, misalnya perintah untuk melakukan kalkulasi dari dua buah angka.
  5. return digunakan untuk mengembalikan nilai dari sebuah fungsi ketika statement di dalam fungsi selesai dijalankan, return bersifat opsional.

Perhatian : statement / baris perintah yang berada didalam fungsi harus memiliki identasi (spasi 4x atau tab). Karena jika tanpa identasi program yang kita buat akan error.

Memanggil Fungsi

Setelah fungsi didefinisikan, maka fungsi tersebut sudah bisa dipanggil kapanpun kita butuhkan. Cara memanggil fungsi yang telah didefinisikan adalah dengan menulis nama fungsi dan disertai parameternya jika fungsi tersebut memiliki parameter.

Berikut contoh cara memanggil fungsi:

## Memanggil fungsi dengan parameter
function_name(parameter)

## Memanggil fungsi tanpa parameter
function_name()

Fungsi Tanpa Parameter

Untuk membuat sebuah fungsi tanpa parameter format yang digunakan sama, hanya saja fungsi tersebut tidak memiliki input dari luar fungsi.

Berikut contoh fungsi tanpa parameter:

## Mendefinisikan fungsi greet
def greet():
    print "Halo, Selamat Siang"

## Memanggil fungsi greet
greet()

Output dari program di atas adalah seperti berikut:

Halo, Selamat Siang

Ketika sebuah fungsi dipanggil maka otomatis semua perintah yang ada di dalam fungsi akan dijalankan.

Fungsi Dengan Parameter

Bagaimana jika sebuah fungsi memerlukan inputan nilai dari luar fungsi???

Hal ini tentu saja dapat diatasi dengan parameter atau argumen fungsi. Parameter fungsi pada python sendiri memiliki beberapa kriteria seperti dibawah ini:

  1. Required Argument (Argumen Wajib)
  2. Keyword Argument (Argument Kata Kunci)
  3. Default Argument
  4. Arbitary Argument
1. Required Argument

Argumen atau Parameter required merupakan parameter yang dimasukkan ke dalam fungsi harus memiliki nilai, karena jika tidak akan terjadi error. Parameter yang dimasukkan juga harus memiliki urutan yang sesuai.

Contoh:

## Mendefinisikan fungsi greet
## Memiliki parameter berupa nama dan waktu

def greet(nama, waktu):
    print "Halo " + nama + ", Selamat " + waktu


## Memanggil fungsi greet
greet('Jhon', 'Malam')

Output dari program di atas adalah:

Halo Jhon, Selamat Malam

Apabila ketika memanggil fungsi tersebut kita tidak memasukkan parameter yang diperlukan seperti greet(), maka program akan terjadi error seperti berikut:

Traceback (most recent call last):
  File "main.py", line 4, in <module>
    greet()
TypeError: greet() takes exactly 2 arguments (0 given)

Artinya fungsi yang kita panggil memiliki 2 argumen yang diperlukan tetapi kita tidak memasukkan argumen yang diperlukan tersebut. Error ini juga akan terjadi ketika kita hanya memasukkan jumlah argumen yang diperlukan oleh fungsi tidak sesuai.

Perhatian : argumen yang dimasukkan ketika memanggil fungsi harus berurutan sesuai dengan urutan saat mendefinisikan fungsi.

Apabila kita memanggil fungsi di atas seperti berikut:

greet('Malam', 'John')

Maka outputnya akan seperti berikut:

Halo Malam, Selamat John
2. Keyword Argument

Keyword Argument atau argument kata kunci berkaitan dengan cara pemanggilan fungsi. Ketika menggunakan keyword argument untuk memanggil fungsi, maka fungsi akan menentukan argumen dari nama parameternya. Hal ini tentu saja bisa membuat kita mengabaikan urutan argumen atau paramater ketika mendefinisikan fungsi.

Pendefinisian fungsi yang dilakukan sama saja seperti pada Required Argument, hanya saja berbeda ketika melakukan pemanggilan fungsinya.

Pemanggilan keyword argument dilakukan dengan memberikan nama parameter dan nilai dari parameter tersebut seperti dibawah ini:

## Mendefinisikan fungsi greet
def greet(nama, waktu):
    print "Halo " + nama + ", Selamat " + waktu

## Memanggil fungsi greet dengan keyword argument
greet(nama='John', waktu='Siang')

Output dari program di atas adalah:

Halo John, Selamat Siang

Dengan menggunakan keyword argument kita dapat memasukkan parameter secara tidak berurutan ketika memanggil fungsi, tidak seperti required argument yang hasilnya akan berbeda ketika dimasukkan secara tidak berurut, pada keyword argument akan menghasilkan nilai yang sama seperti berikut:

greet(waktu='Siang', nama='John')

Hasil dari program di atas adalah:

Halo John, Selamat Siang
3. Default Argument

Default Argument adalah nilai default dari parameter suatu fungsi. Parameter yang memiliki nilai default bersifat opsional, artinya ketika memanggil fungsi kita tidak harus memberikan parameter tersebut. Ketika tidak memberikan nilai parameter saat memanggil fungsi, maka fungsi akan otomatis menggunakan nilai defaultnya.

Berikut contoh penggunaan fungsi dengan default argument:

## Mendefinisikan fungsi greet dengan default waktu = pagi
def greet(nama, waktu='Pagi'):
    print "Halo " + nama + ", Selamat " + waktu

Kita dapat memanggil fungsi di atas dengan cara seperti berikut:

greet(nama='John')
greet(nama='John', waktu='Sore')

Maka outputnya seperti berikut:

Halo John, Selamat Pagi
Halo John, Selamat Sore

Pada pemanggilan fungsi yang pertama kita hanya memasukkan nilai dari parameter nama, maka nilai untuk waktu adalah nilai default, yaitu Pagi. Namun disaat pemanggilan yang kedua kita memasukkan nilai untuk parameter nama dan waktu, maka nilai dari waktu adalah nilai yang dimasukkan, yaitu Sore.

4. Arbitary Argument

Dikondisi tertentu mungkin kita butuh memproses fungsi yang memiliki banyak argumen. Tentu hal ini akan sangat merepotkan ketika kita harus mendefinisikan parameternya satu persatu seperti berikut:

def greet(nama1, nama2, ....namaN):
    print "Halo " + nama1 + ", Selamat Pagi"
    print "Halo " + nama2 + ", Selamat Pagi"
    ...
    print "Halo " + namaN + ", Selamat Pagi"

Bagaimana jika jumlah parameter yang diperlukan tidak sama atau dinamis???

Untuk mengatasi kasus seperti di atas, kita dapat menggunakan arbitary argument. Kita dapat memasukkan nilai parameter tanpa harus mendefinisikan satu persatu dan juga panjang parameternya bersifat dinamis atau dapat berubah-ubah.

Dengan menggunakan arbitary argument program di atas dapat kita singkat menjadi seperti berikut:

def greet(*names):
    for nama in names:
        print "Halo " + nama + ", Selamat Pagi"

Kita dapat memasukkan berapapun banyaknya nama dalam fungsi tersebut:

greet('John', 'Alex', 'Smith')

Outputnya adalah:

Halo John, Selamat Pagi
Halo Alex, Selamat Pagi
Halo Smith, Selamat Pagi

Bagaimana jika kita butuh 4 nama dan seterusnya????

Gampang, kita cukup memasukkan berapapun jumlahnya saat memanggil fungsi tersebut. Mudah kan? 😁

Variabel global dan lokal pada python

Tidak semua variabel bisa diakses dari semua tempat. Hal ini tergantung dimana tempat kita mendefenisikan variabel tersebut.

Secara umum variabel memiliki dua ruang lingkup:

  1. Variabel Global
  2. Variabel Lokal

Variabel yang didefinisikan didalam sebuah fungsi memiliki ruang lingkup lokal, sedangkan yang didefinisikan di luar fungsi memiliki ruang lingkup global.

Variabel lokal hanya bisa di akses dari dalam fungsi dimana dia didefinisikan, sedangkan variabel global bisa di akses dari seluruh tempat di dalam program.

Mari kita lihat contohnya…

# Variabel global
total = 0

# Mendefinisikan fungsi untuk kalkulasi
def tambah(a, b):
    total = a + b
    # total disini adalah variabel lokal
    print "Total (variabel lokal) : ",total
    return total

# Memanggil fungsi tambah
tambah(10, 30)
print "Total (variabel global) : ",total

Output dari program di atas adalah:

Total (variabel lokal) : 40
Total (variabel global) : 0

Bagaimana jika kita ingin membuat nilai dari variabel global total sama dengan nilai variabel lokal total????

Cukup sederhana….

Di dalam fungsi tambah() terdapat return expression, yang artinya fungsi tersebut mengembalikan sebuah nilai. Dalam kasus ini adalah nilai hasil penjumlahan dua buah angka.

Untuk membuat nilai dari variabel global total sama dengan nilai variabel lokal total, kita cukup menulis kode seperti dibawah:

# Variabel global
total = 0

# Mendefinisikan fungsi untuk kalkulasi
def tambah(a, b):
    total = a + b
    # total disini adalah variabel lokal
    print "Total (variabel lokal) : ",total
    return total

# Memanggil fungsi tambah
# Memasukkan return value ke dalam variabel global total
total = tambah(10, 30)
print "Total (variabel global) : ",total

Output dari program di atas adalah seperti berikut:

Total (variabel lokal) : 40
Total (variabel global) : 40

Langkah Selanjutnya

Kita sudah belajar mengenai dasar-dasar fungsi pada python, dari cara mendefinisikan hingga cara menggunakannya.

Fungsi akan sangat sering digunakan ketika program yang kita bangun dalam skala besar. Memecah program yang besar menjadi bagian-bagian yang lebih kecil (fungsi) sangat membantu kita untuk melakukan maintenace terhadap program yang kita kembangkan.

Selanjutnya kita akan belajar tentang modul pada python.

Semangat belajar… Sampai Jumpa 😄