Mengenal Jenis-Jenis Fungsi di Python
Sebagai developer independen, awalnya saya sering bingung bedain kapan pakai fungsi biasa, lambda, atau generator. Tapi setelah sering eksperimen, ternyata tiap jenis fungsi punya keunggulan sendiri dan bikin kode lebih rapi serta reusable. Gini deh, mari kita bahas lengkap.
1. Built-in Functions
Python sudah menyediakan banyak fungsi bawaan yang bisa langsung dipakai:
print("Hello, world!")
print(len([1,2,3]))
print(sum([1,2,3]))
Contoh lain: type()
, range()
, dll. Simpel tapi powerful.
2. User-Defined Functions
Fungsi yang kita buat sendiri pakai def
:
def greet(name):
return f"Hello, {name}!"
print(greet("Alice"))
Reusable dan bikin kode lebih modular.
3. Lambda Functions
Fungsi satu baris tanpa nama, cocok buat operasi singkat:
add = lambda x, y: x + y
print(add(5,3))
4. Recursive Functions
Fungsi yang memanggil dirinya sendiri, pas banget buat masalah yang bisa dipecah jadi sub-problem:
def factorial(n):
return 1 if n==0 else n*factorial(n-1)
print(factorial(5))
5. Functions as Arguments
Fungsi bisa dikirim ke fungsi lain, sering dipakai di map()
, filter()
, sorted()
:
numbers = [1,2,3,4,5]
squared = list(map(lambda x: x**2, numbers))
print(squared)
6. Default Arguments
Bisa kasih nilai default supaya nggak wajib isi semua parameter:
def greet(name="Guest"):
return f"Hello, {name}!"
print(greet()) # Hello, Guest!
print(greet("Bob")) # Hello, Bob!
7. Variable Arguments (*args
& **kwargs
)
Fungsi bisa terima jumlah parameter fleksibel:
def add_numbers(*args):
return sum(args)
print(add_numbers(1,2,3,4))
def print_info(**kwargs):
for k,v in kwargs.items():
print(f"{k}: {v}")
print_info(name="Alice", age=30)
8. Generator Functions
Pakainya yield
, hemat memori karena generate nilai satu per satu:
def count_up_to(max):
count = 1
while count <= max:
yield count
count += 1
for n in count_up_to(5):
print(n)
9. Decorators
Fungsi yang “membungkus” fungsi lain, buat menambah fitur dengan clean code:
def decorator_func(original_func):
def wrapper():
print(f"Wrapper sebelum {original_func.__name__}")
return original_func()
return wrapper
@decorator_func
def display():
return "Display function executed"
print(display())
Kesimpulan
Gini deh, fungsi di Python itu fleksibel banget. Dari built-in, user-defined, lambda, hingga generator atau decorator, semuanya punya peran masing-masing. Sejak kita mulai eksplor berbagai tipe fungsi ini, kode Python kita jadi lebih bersih, modular, dan gampang di-maintain.
Kalau kamu mau serius main Python, mastering semua tipe fungsi ini wajib, biar coding sehari-hari lebih efisien.