Langsung ke konten
KamusNgoding
Pemula Python 1 menit baca

Fungsi di Python: Definisi, Parameter, dan Return

#python #fungsi #function #parameter #return #lambda

Fungsi adalah blok kode yang diberi nama dan bisa dipanggil berkali-kali. Prinsipnya: tulis sekali, pakai berkali-kali (Don’t Repeat Yourself / DRY).

Mendefinisikan Fungsi

def sapa(nama):
    print(f"Halo, {nama}! Selamat datang.")

# Memanggil fungsi
sapa("Andi")   # Halo, Andi! Selamat datang.
sapa("Budi")   # Halo, Budi! Selamat datang.

return — Mengembalikan Nilai

def tambah(a, b):
    return a + b

hasil = tambah(3, 7)
print(hasil)   # 10

# Fungsi bisa return beberapa nilai (sebagai tuple)
def min_max(angka: list):
    return min(angka), max(angka)

minimum, maksimum = min_max([5, 2, 9, 1, 7])
print(minimum, maksimum)   # 1 9

Fungsi tanpa return (atau return tanpa nilai) mengembalikan None.

Parameter Default

def buat_profil(nama, kota="Jakarta", umur=0):
    print(f"{nama}, {kota}, {umur} tahun")

buat_profil("Citra")                    # Citra, Jakarta, 0 tahun
buat_profil("Deni", "Bandung")          # Deni, Bandung, 0 tahun
buat_profil("Eka", "Surabaya", 28)      # Eka, Surabaya, 28 tahun

Aturan: Parameter dengan nilai default harus diletakkan setelah parameter tanpa default.

Keyword Arguments

Panggil fungsi dengan menyebutkan nama parameter — urutan bebas:

def pesan_tiket(tujuan, kelas, jumlah=1):
    print(f"{jumlah}x tiket {kelas} ke {tujuan}")

# Positional
pesan_tiket("Bali", "Ekonomi", 2)

# Keyword — urutan bebas
pesan_tiket(kelas="Bisnis", tujuan="Lombok", jumlah=1)

*args — Jumlah Argumen Fleksibel

def jumlahkan(*angka):
    total = sum(angka)
    print(f"Total: {total}")

jumlahkan(1, 2, 3)           # Total: 6
jumlahkan(10, 20, 30, 40)    # Total: 100

*args mengumpulkan semua argumen posisi menjadi sebuah tuple.

**kwargs — Keyword Argumen Fleksibel

def tampilkan_info(**data):
    for key, value in data.items():
        print(f"  {key}: {value}")

tampilkan_info(nama="Farhan", kota="Medan", hobi="Coding")
# nama: Farhan
# kota: Medan
# hobi: Coding

**kwargs mengumpulkan keyword argumen menjadi sebuah dict.

Type Hints (Opsional tapi Dianjurkan)

def hitung_luas(panjang: float, lebar: float) -> float:
    return panjang * lebar

def cari_kata(teks: str, kata: str) -> list[int]:
    """Mengembalikan posisi semua kemunculan kata dalam teks."""
    hasil = []
    start = 0
    while True:
        pos = teks.find(kata, start)
        if pos == -1:
            break
        hasil.append(pos)
        start = pos + 1
    return hasil

Type hints tidak memengaruhi eksekusi, tapi sangat membantu editor dan pembaca kode.

Docstring

def konversi_suhu(celsius: float, ke: str = "fahrenheit") -> float:
    """
    Konversi suhu dari Celsius ke satuan lain.

    Args:
        celsius: Suhu dalam derajat Celsius.
        ke: Satuan tujuan — 'fahrenheit' atau 'kelvin'.

    Returns:
        Suhu dalam satuan yang dipilih.

    Raises:
        ValueError: Jika satuan tidak dikenali.
    """
    if ke == "fahrenheit":
        return celsius * 9/5 + 32
    elif ke == "kelvin":
        return celsius + 273.15
    else:
        raise ValueError(f"Satuan '{ke}' tidak dikenali.")

help(konversi_suhu)   # menampilkan docstring

Lambda — Fungsi Anonim Satu Baris

# Fungsi biasa
def kali_dua(x):
    return x * 2

# Lambda setara
kali_dua = lambda x: x * 2

print(kali_dua(5))   # 10

# Sering dipakai dengan sorted(), map(), filter()
mahasiswa = [
    {"nama": "Andi", "ipk": 3.5},
    {"nama": "Budi", "ipk": 3.8},
    {"nama": "Citra", "ipk": 3.2},
]

# Urutkan berdasarkan IPK (descending)
terurut = sorted(mahasiswa, key=lambda m: m["ipk"], reverse=True)
for m in terurut:
    print(f"{m['nama']}: {m['ipk']}")

Contoh Nyata: Kalkulasi Diskon

def hitung_harga_akhir(
    harga: float,
    diskon_persen: float = 0,
    pajak_persen: float = 11.0
) -> dict:
    """Menghitung harga akhir setelah diskon dan pajak."""
    harga_setelah_diskon = harga * (1 - diskon_persen / 100)
    pajak = harga_setelah_diskon * (pajak_persen / 100)
    total = harga_setelah_diskon + pajak

    return {
        "harga_awal": harga,
        "diskon": harga - harga_setelah_diskon,
        "pajak": pajak,
        "total": total,
    }

hasil = hitung_harga_akhir(500_000, diskon_persen=20)
for k, v in hasil.items():
    print(f"{k:20}: Rp{v:,.0f}")

Kesimpulan

KonsepKegunaan
def nama():Mendefinisikan fungsi
returnMengembalikan nilai
Parameter defaultNilai opsional dengan fallback
*argsTerima banyak argumen posisi
**kwargsTerima banyak keyword argumen
Type hintsDokumentasi tipe data
lambdaFungsi singkat satu baris

Artikel selanjutnya: OOP di Python — class, object, dan inheritance untuk membangun kode yang lebih terstruktur.

Artikel Terkait