Soal 1Pemetaan modul / package / library mana yang benar?
Modul dan Package — Mengimpor dari File Lain
Pelajari perbedaan antara modul, package, dan library Python, plus cara statement import menarik fungsi dari file lain.
Aplikasi Python biasanya dibangun dengan memecah pekerjaan ke beberapa file lalu menyambungkannya. Artikel ini membahas unit yang disebut modul dan package, plus cara statement import menarik fitur dari file lain.
Modul vs Package vs Library
Python mengorganisasi kode dalam tiga ukuran: modul → package → library. Sebuah modul adalah satu file .py, sebuah package adalah folder berisi modul-modul, dan sebuah library adalah tingkat selanjutnya — bundel yang bisa didistribusikan.
| Unit | Apa itu | Contoh |
|---|---|---|
| Modul | Satu file .py | math_utility.py |
| Package | Folder berisi __init__.py | my_app/database/ |
| Library | Distribusi satu atau beberapa package | pandas / NumPy / requests |
Library Standar vs Library Pihak Ketiga
Python hadir dengan library standar bawaan, dan ada library pihak ketiga yang kamu pasang di atasnya. Library standar seperti math, os, dan json cukup pakai import. Library pihak ketiga seperti pandas atau requests perlu pip install package_name dulu.
| Tipe | Pemasangan | Contoh |
|---|---|---|
| Library standar | Sudah dibundel dengan Python (tanpa instalasi) | math / os / sys / json / datetime |
| Library pihak ketiga | Tambahkan via pip install | pandas / numpy / requests |
Mengimpor Modul Buatan Sendiri
Kamu bisa mengimpor file .py-mu sendiri persis seperti library standar. Saat menjalankan Python secara lokal, taruh main.py dan file yang ingin kamu impor (math_utility.py) di folder yang sama — itu saja. File di folder yang sama dimuat hanya dengan import math_utility dari main.py (tanpa akhiran .py di statement import).
- main.py — entry point. Diawali dengan
import math_utility - math_utility.py — modul yang mendefinisikan
add()/multiply()
import math_utility langsung menemukan tetangga — tanpa perlu subfolder.import math_utility berjalan, Python memuat math_utility.py dari folder yang sama. Setelah itu, kamu bisa memanggil fungsi-fungsinya sebagai math_utility.add(...) dengan nama modul di depan.import Menjalankan Seluruh File Sekali
Saat kamu menulis import math_utility, Python mengeksekusi math_utility.py dari atas ke bawah satu kali. Definisi fungsi (def) terdaftar di memori pada saat itu, sehingga nanti kamu bisa memanggilnya sebagai math_utility.add(...). Body fungsi-fungsi itu tidak berjalan saat import — hanya kode di luar fungsi mana pun (top level modul).
import math_utility, Python menjalankan math_utility.py dari atas ke bawah. Definisi def terdaftar di memori dan setelah itu bisa dipanggil sebagai math_utility.add(...).Jangan Lakukan Pekerjaan Berat di Top Level Modul
Top level berarti kode yang berada di indentasi paling luar — di luar fungsi atau class mana pun. Python menjalankannya dari atas ke bawah setiap kali modul diimpor. Menempatkan pekerjaan berat di sana (koneksi DB, memuat file besar, loop tak terbatas) berarti sekadar mengimpor modul memakan waktu lama. Simpan logika berat di dalam fungsi dan biarkan hanya definisi serta inisialisasi minimal di top level.
Membedakan Eksekusi Langsung dengan Import — __name__
File Python hadir dalam dua peran: script yang dijalankan langsung (kamu menjalankannya dengan python xxx.py) dan modul yang diimpor oleh sesuatu yang lain. File yang sama bisa memerankan keduanya, dan kamu sering perlu membedakan mana yang sedang terjadi — misalnya, "hanya jalankan smoke test saat file dijalankan langsung".
Pemeriksaan ini memakai variabel khusus __name__ yang Python set otomatis. Saat file dijalankan langsung, __name__ adalah "__main__". Saat file diimpor, __name__ adalah nama modulnya (nama file). Kode di dalam if __name__ == "__main__": hanya berjalan di kasus pertama.
__name__ yang di-set otomatis bernilai "__main__" saat kamu menjalankan file langsung (python xxx.py), dan nama modul (nama file) saat file lain mengimpornya.# math_utility.py
def add(a, b):
return a + b
# Smoke test hanya saat dijalankan langsung
if __name__ == "__main__":
print("check:", add(10, 20)) # 30
# Saat file lain melakukan `import math_utility`,
# blok if di atas tidak berjalan — hanya fungsi add yang terekspos.
Menggabungkan Beberapa Modul Buatan Sendiri
Di aplikasi nyata kamu biasanya memecah fungsi ke file-file terpisah berdasarkan tanggung jawab lalu menariknya semua dari main.py. Misalnya, pemeriksaan input ada di validator.py, formatting tampilan di formatter.py. Dengan tanggung jawab dipecah seperti ini, perubahan formatting hanya menyentuh formatter.py — main.py dan validator.py tetap tidak terganggu.
import validator dan import formatter, lalu menggabungkan fungsi-fungsi mereka untuk satu pekerjaan.Artikel ini membahas hierarki modul / package / library, cara import menarik fungsi dari file lain, apa yang berjalan saat import, pola __name__ == "__main__" untuk membedakan eksekusi langsung dari import, dan pemecahan multi-modul di mana setiap file memegang satu tanggung jawab. Artikel berikutnya menggali package dan file __init__.py.
Cek Pemahaman
Jawab setiap pertanyaan satu per satu.
Soal 2math_utility.py memiliki print("hello") yang ditulis di top level. Apa yang muncul di layar saat file lain melakukan import math_utility?
Soal 3Pasangan yang tepat untuk eksekusi langsung vs import dari kode ini?if __name__ == "__main__":
print("hello")