Pemrograman Python: Dari Nol sampai Proyek Mini

Belum masuk. Progresmu tidak tersimpan.

Masuk
  • Bab 8 dari 11
  • 30 menit
  • 1 latihan kode
  • 4 soal kuis

Fungsi dan Modul

Di bab ini (10 bagian)
  1. Tujuan
  2. Kenapa perlu fungsi
  3. Membuat fungsi dengan def
  4. return vs print
  5. Lambda: fungsi satu baris
  6. Scope sederhana
  7. Modul: memakai kode orang lain
  8. pip, PyPI, dan venv
  9. Kesalahan umum
  10. Rangkuman

Tujuan bab ini

  • Membuat fungsi dengan def, parameter, nilai default, return, dan docstring.
  • Membedakan return dengan print, serta memahami scope variabel secara sederhana.
  • Memakai modul bawaan lewat import, from, dan as, lalu memasang library dari PyPI dengan pip di dalam venv.

Kenapa perlu fungsi

Bayangkan kamu menulis rumus diskon yang sama di sepuluh tempat. Lalu aturan diskonnya berubah. Kamu harus mencari dan mengganti sepuluh tempat itu, dan kemungkinan besar ada satu yang terlewat.

Fungsi menyelesaikan masalah itu. Fungsi adalah blok kode bernama yang bisa dipanggil berulang kali. Analoginya seperti resep: kamu menulis resepnya sekali, lalu bisa memasak kapan saja hanya dengan menyebut nama resepnya. Prinsip ini sering disebut DRY, Don't Repeat Yourself.

Membuat fungsi dengan def

def sapa(nama, salam="Halo"):
    """Mengembalikan kalimat sapaan."""
    return f"{salam}, {nama}!"

print(sapa("Dewi"))
print(sapa("Joko", "Selamat pagi"))

Output:

Halo, Dewi!
Selamat pagi, Joko!

Anatomi fungsi: def, parameter, return, dan lambda

Mari bedah bagian-bagiannya:

BagianContohFungsinya
defdef sapa(...)kata kunci untuk membuat fungsi
Parameternamadata masukan fungsi
Parameter defaultsalam="Halo"nilai bawaan bila tidak diisi
Docstring"""Mengembalikan..."""dokumentasi singkat fungsi
returnreturn f"..."mengirim hasil ke pemanggil

Nilai yang kamu kirim saat memanggil fungsi, seperti "Dewi", disebut argumen. Parameter adalah "wadahnya", argumen adalah "isinya".

Parameter default membuat argumen jadi opsional. Aturannya: parameter dengan default harus ditulis setelah parameter tanpa default. def sapa(salam="Halo", nama): akan memicu SyntaxError.

Kamu juga bisa memanggil fungsi dengan nama parameter (keyword argument), misalnya sapa(salam="Hai", nama="Budi"). Urutannya jadi bebas dan kodenya lebih jelas dibaca.

Docstring

Docstring adalah string bertanda kutip tiga yang ditulis tepat di bawah baris def. Isinya penjelasan singkat tentang apa yang dilakukan fungsi. Editor seperti VS Code menampilkannya saat kursor diarahkan ke nama fungsi, dan kamu bisa melihatnya dengan help(sapa).

return vs print

Ini salah satu kebingungan terbesar pemula. Keduanya sama-sama "mengeluarkan sesuatu", tapi tujuannya berbeda.

  • print menampilkan teks ke layar untuk dibaca manusia. Nilainya tidak bisa dipakai lagi oleh program.
  • return mengirim nilai kembali ke pemanggil, sehingga bisa disimpan di variabel, dihitung, atau dikirim ke fungsi lain.
def luas_print(sisi):
    print(sisi * sisi)

def luas_return(sisi):
    return sisi * sisi

a = luas_print(4)    # tercetak 16
b = luas_return(4)   # tidak tercetak apa-apa

print(a)             # None
print(b + 1)         # 17

Fungsi tanpa return otomatis mengembalikan None. Itulah sebabnya a berisi None dan a + 1 akan error. Aturan praktisnya: fungsi yang menghitung sebaiknya memakai return, lalu biarkan pemanggil yang memutuskan mau mencetak atau tidak.

Begitu return dijalankan, fungsi langsung selesai. Baris di bawahnya di dalam fungsi tidak akan dieksekusi.

Lambda: fungsi satu baris

Lambda adalah fungsi singkat tanpa nama yang hanya berisi satu ekspresi.

kali2 = lambda x: x * 2
print(kali2(5))   # 10

siswa = [("Rina", 92), ("Andi", 78), ("Sari", 85)]
siswa.sort(key=lambda s: s[1])
print(siswa)      # [('Andi', 78), ('Sari', 85), ('Rina', 92)]

Lambda paling berguna saat fungsi kecil dibutuhkan sekali, misalnya sebagai key untuk sort, sorted, max, atau min. Untuk logika yang lebih dari satu baris, tetap pakai def agar mudah dibaca.

Scope sederhana

Variabel yang dibuat di dalam fungsi bersifat lokal: hanya hidup selama fungsi berjalan dan tidak terlihat dari luar.

def hitung():
    hasil = 10
    return hasil

hitung()
print(hasil)   # NameError: name 'hasil' is not defined

Sebaliknya, fungsi bisa membaca variabel global yang dibuat di luar fungsi. Tapi kebiasaan yang baik adalah mengirim data lewat parameter dan mengambil hasil lewat return. Fungsi seperti ini lebih mudah diuji dan tidak bergantung pada keadaan di luar.

Modul: memakai kode orang lain

Modul adalah file .py berisi kode yang bisa kamu impor. Python datang dengan standard library, kumpulan modul bawaan yang langsung siap pakai tanpa instalasi.

import math
from random import randint
import datetime as dt

print(math.sqrt(16))     # 4.0
print(randint(1, 10))    # angka acak 1 sampai 10
print(dt.date.today())   # tanggal hari ini, misal 2026-10-21
Cara imporContohCara pakai
import modulimport mathmath.sqrt(16)
from modul import namafrom random import randintrandint(1, 10)
import modul as aliasimport datetime as dtdt.date.today()

Modul bawaan yang sering dipakai:

ModulKegunaan
mathfungsi matematika: sqrt, pi, ceil, floor
randomangka acak, memilih item acak
datetimetanggal dan waktu
osberinteraksi dengan file, folder, dan sistem
jsonmembaca dan menulis data JSON
csvmengolah file CSV seperti data spreadsheet

Kamu juga bisa membuat modul sendiri. Misalnya fungsi sapa disimpan di utilitas.py, lalu di file lain cukup tulis from utilitas import sapa.

pip, PyPI, dan venv

Kalau standard library tidak cukup, ada ratusan ribu library pihak ketiga di PyPI (Python Package Index, pypi.org). Library dipasang dengan pip, pengelola paket Python.

Sebelum memasang library, biasakan membuat virtual environment (venv). Venv adalah folder terisolasi berisi Python dan library khusus untuk satu proyek. Tanpa venv, semua proyek berbagi library yang sama, dan proyek A yang butuh versi 1 bisa bentrok dengan proyek B yang butuh versi 2.

python -m venv env           # buat venv bernama env
source env/bin/activate      # aktifkan (macOS/Linux)
env\Scripts\activate         # aktifkan (Windows)
pip install requests         # pasang library
pip list                     # lihat library terpasang

Setelah venv aktif, nama (env) biasanya muncul di awal prompt terminal. Untuk mencatat daftar library proyek, pakai pip freeze > requirements.txt, lalu orang lain bisa memasangnya dengan pip install -r requirements.txt.

Kesalahan umum

  • Memakai print padahal butuh return. Hasilnya None saat nilainya ingin dipakai lagi.
  • Lupa memanggil fungsi dengan tanda kurung. sapa tanpa () hanya merujuk ke fungsinya, tidak menjalankannya.
  • Parameter default di depan parameter wajib. Memicu SyntaxError.
  • Menamai file sendiri sama dengan modul bawaan. File bernama random.py atau math.py di folder proyek akan "menutupi" modul aslinya.
  • Memasang library tanpa mengaktifkan venv. Library terpasang ke Python global dan bisa bentrok antarproyek.

Rangkuman

  • Fungsi dibuat dengan def, menerima parameter (boleh punya nilai default), dan mengembalikan hasil dengan return.
  • return mengirim nilai ke pemanggil, sedangkan print hanya menampilkan; fungsi tanpa return menghasilkan None.
  • Docstring mendokumentasikan fungsi, lambda adalah fungsi satu ekspresi tanpa nama, dan variabel di dalam fungsi bersifat lokal.
  • Modul diimpor dengan import, from ... import, atau as; standard library seperti math, random, datetime, os, json, dan csv siap pakai.
  • Library pihak ketiga dari PyPI dipasang dengan pip, sebaiknya di dalam venv agar dependensi tiap proyek terpisah.

Selesaikan bab ini

  1. 1. Baca materi
  2. 2. Latihan kode (1)
  3. 3. Kuis (4 soal)

Latihan kode: Fungsi harga setelah diskon

Lengkapi fungsi harga_akhir(harga, diskon=10) yang mengembalikan harga setelah dipotong diskon persen, sebagai bilangan bulat (int).

  • Parameter diskon punya nilai default 10.
  • Pakai return, bukan print.
  • Tambahkan docstring satu baris di bawah def.

Contoh: harga_akhir(100000) menghasilkan 90000, dan harga_akhir(50000, 20) menghasilkan 40000.

Cek pemahaman

  1. 1Apa yang dicetak kode berikut?

    def sapa(nama, salam="Halo"):
        return f"{salam}, {nama}!"
    
    print(sapa("Budi", "Hai"))
  2. 2Apa yang dicetak kode berikut?

    def luas(sisi):
        print(sisi * sisi)
    
    x = luas(4)
    print(x)
  3. 3Virtual environment (venv) membuat library tiap proyek terpisah agar tidak saling bentrok.

  4. 4Penulisan impor mana yang membuat kamu bisa memanggil randint(1, 6) secara langsung?