pythonmodulimportMenengah5 mnt baca

Modul, Package, dan Import di Python

Berhenti menulis semua kode di satu file: pecah jadi modul, import dengan rapi, dan pahami trik __name__.

Analogi singkat: kotak perkakas berlabel

Bayangkan meja kerjamu berantakan: obeng, palu, dan paku tercampur jadi satu. Modul itu seperti kotak perkakas berlabel: obeng di kotak "pertukangan", kabel di kotak "elektronik". Saat butuh, kamu ambil kotaknya (import), bukan mengobrak-abrik seluruh meja. Program yang besar butuh kerapian yang sama.

Kenapa konsep ini ada?

File Python yang berisi ribuan baris itu mimpi buruk: susah dicari, susah dites, susah dipakai ulang. Modul memecah program jadi file-file kecil yang fokus pada satu tugas. Lebih penting lagi, modul memungkinkan pakai ulang: fungsi pembersih data yang kamu tulis sekali bisa diimport ke sepuluh proyek berbeda tanpa copy-paste.

Tiga cara import

python
# 1. import seluruh modul
import math
print(math.sqrt(16))  # 4.0

# 2. import dengan nama pendek (alias)
import pandas as pd  # konvensi standar di dunia data

# 3. import bagian tertentu saja
from math import sqrt, pi
print(sqrt(25), pi)

# 4. import semuanya (JARANG dipakai, bikin nama bentrok)
# from math import *

Catatan teknis: Hindari from x import * di kode produksi. Ia menumpuk semua nama ke file-mu tanpa jejak asal, sehingga dua modul bisa diam-diam menimpa fungsi satu sama lain.

Membuat modul sendiri

Modul tidak lebih dari file .py biasa. Misal kamu buat bersih_data.py:

python
# file: bersih_data.py
def rapikan_teks(teks):
    return " ".join(teks.lower().split())

def ke_rupiah(angka):
    return f"Rp{angka:,}".replace(",", ".")

Lalu pakai dari file lain di folder yang sama:

python
# file: analisis.py
import bersih_data
from bersih_data import ke_rupiah

print(bersih_data.rapikan_teks("KOPI   SUSU"))  # kopi susu
print(ke_rupiah(15000))  # Rp15.000

Package: folder berisi modul

Kalau modul sudah banyak, kelompokkan dalam folder yang berisi file __init__.py. Itu namanya package:

proyek/ util/ __init__.py teks.py angka.py main.py
python
# di main.py
from util.teks import rapikan_teks
from util import angka

Trik name: file yang bisa jadi dua peran

python
# file: bersih_data.py
def rapikan_teks(teks):
    return " ".join(teks.lower().split())

if __name__ == "__main__":
    # blok ini HANYA jalan kalau file dieksekusi langsung,
    # tidak jalan kalau file diimport orang lain
    print(rapikan_teks("TES   CEPAT"))
bash
python bersih_data.py   # mencetak "tes cepat" (tes mandiri)

Pola ini standar di hampir semua proyek Python: modul bisa dites sendiri, tapi tetap aman diimport.

Contoh 1: modul util untuk proyek data

python
# file: dtool.py (data tool)
def rata_rata(data):
    return sum(data) / len(data) if data else 0

def buang_kosong(data):
    return [x for x in data if x not in (None, "", 0)]
python
# file: laporan.py
from dtool import rata_rata, buang_kosong

nilai = [80, 0, 90, "", 70, None]
bersih = buang_kosong(nilai)
print("Data bersih:", bersih)          # [80, 90, 70]
print("Rata-rata:", rata_rata(bersih))  # 80.0

Contoh 2: struktur mini proyek analisis

python
# proyek_analisis/
#   loader.py     -> def baca_csv(path)
#   cleaner.py    -> def bersihkan(baris)
#   reporter.py   -> def ringkasan(data)
#   main.py       -> orkestrasi

# main.py
from loader import baca_csv
from cleaner import bersihkan
from reporter import ringkasan

def main():
    data = baca_csv("penjualan.csv")
    data = [bersihkan(b) for b in data]
    print(ringkasan(data))

if __name__ == "__main__":
    main()

Tiap file punya satu tanggung jawab. Kalau ada bug di pembersihan data, kamu tahu persis harus membuka file apa.

Kesalahan umum

SALAH: nama file menabrak modul standar

python
# file: math.py  <- JANGAN! menutupi modul math bawaan Python
import math  # malah mengimport file-mu sendiri

BENAR: beri nama yang spesifik

python
# file: hitung_diskon.py  <- aman

SALAH: import di tengah file secara acak

python
def proses():
    import re  # jalan, tapi susah dilacak

BENAR: semua import di atas file

python
import re

def proses():
    ...

Tantangan

Modul Statistik Mini

Buat file statistik.py berisi fungsi rata_rata(data) dan nilai_maks(data). Lalu di file utama, import keduanya dan pakai untuk list [70, 85, 90, 60]. Tambahkan blok if name == "main" berisi tes cepat.