Default Argument pada Fungsi



Pada catatan kali ini kita akan membahas tentang default argument. Cara kerja default parameter adalah, bilamana sebuah fungsi dipanggil, namun parameter yang dibutuhkan tidak diisi, kita dapat menentukan apa parameter defaultnya.

Untuk mendeklarasikan fungsi dengan default parameter adalah seperti berikut,

def functiong (a, b=value)

b=value menandakan value adalah default parameter yang akan digunakan bila, saat pemanggilan fungsi tidak disertakan parameter b.

Mari kita coba membuat fungsi dengan default parameter, fungsi ini akan mendisplay teks dengan hiasan garis pembatas.


>>> def banner(message, border="-"):
...    line = border * len(message)
...    print(line)
...    print(message)
...    print(line)
...
>>> banner('Teks border default')
-------------------
Teks border default
-------------------
>>> banner('Teks border non default', '*')
***********************
Teks border non default
***********************
>>>

Pemanggilan Fungsi dan Parameter

Pemanggilan fungsi dan pengisian argument cukup fleksibel, kita dapat memanggil berdasar urutan argumen tanpa mengisi keywordnya, atau dengan menggunakan keyword.

Perhatikan, bila kita menuliskan keyword dari argumen, maka posisi argumen dapat kita ubah.


>>> banner("Hello","*")
*****
Hello
*****
>>> banner("Hello", banner='=')
=====
Hello
=====
>>> banner(banner="#", message="Hello")
#####
Hello
#####


Mutable Objek Pada Default Argument

Bila menggunakan default argument sebagai parameter pada fungsi, hati-hati bila menggunakan mutable object. Karena bila salah menggunakannya maka parameter tersebut malah akan menjadi nilai yang tidak berubah.

Untuk lebih jelas langsung dilihat contohnya lewat REPL Terlihat, pada 2 return terakhir, waktu yang ditampilkan tidak berubah.

Default value hanya di evaluated hanya saat def block-fungsi di evaluate, oleh sebab itu nilainya tidak berubah.

>>> import time
>>> time.ctime
'Fri Jun 29 01:12:09 2018'
>>> def show_time(arg=time.ctime()):
...     print(arg)
... 
>>> show_time()
Fri Jun 29 01:15:14 2018
>>> show_time()
Fri Jun 29 01:15:14 2018

Contoh berikutnya adalah, bila menggunakan mutable objek seperti list. Saat kita memanggil fungsi dengan menggunakan default argument, akan terlihat bermasalah.


>>> def tambah_kornet(menu=[]):
...     menu.append("kornet")
...     return menu
...
>>> sarapan = ['Indomie', 'Telur']
>>> tambah_kornet(sarapan)
['Indomie', 'Telur', 'Kornet']
>>> makan_siang = ['Nasi Goreng', 'Telur']
>>> tambah_kornet(makan_siang)
['Nasi Goreng', 'Telur', 'Kornet']
>>> tambah_kornet()
['Kornet']
>>> tambah_kornet()
['Kornet', ['Kornet']

Menurut beberapa tutorial yang saya pelajari, solusinya adalah menggunakan immutable objek sebagai default argument.


>>> def tambah_kornet(menu=None):
...     if menu is None:
...         menu = []
...     menu.append("kornet")
...     return menu
...
>>> tambah_kornet()
['kornet']
>>> tambah_kornet()
['kornet']

Default Argument pada Fungsi Default Argument pada Fungsi Reviewed by noname needed on June 11, 2018 Rating: 5

No comments:

Powered by Blogger.