Belajar dengan membaca secara berurutan

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.

Hierarki Modul / Package / Library
ModulSatu file .pyPackageFolder dengan __init__.pyLibrarypandas / NumPy / dll.berkumpul jadididistribusikan sebagai
File (modul) berkumpul di folder (package), dan beberapa package didistribusikan bersama sebagai satu library (pandas, NumPy, dll.).
UnitApa ituContoh
ModulSatu file .pymath_utility.py
PackageFolder berisi __init__.pymy_app/database/
LibraryDistribusi satu atau beberapa packagepandas / 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.

TipePemasanganContoh
Library standarSudah dibundel dengan Python (tanpa instalasi)math / os / sys / json / datetime
Library pihak ketigaTambahkan via pip installpandas / numpy / requests

Coba library standar math.

① Cetak ceiling integer dari 1.7 dengan math.ceil(1.7).

② Cetak akar kuadrat dari 3 dengan math.sqrt(3).

(Jika kamu menjalankannya dengan benar, penjelasan muncul di bawah.)

Python Editor

Jalankan kode untuk melihat output

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).

Layout Lokal (File Bersebelahan)
my_project/ ← folder proyek
  • main.py — entry point. Diawali dengan import math_utility
  • math_utility.py — modul yang mendefinisikan add() / multiply()
Tempatkan main.py dan math_utility.py di folder yang sama. Python memeriksa folder file yang sedang berjalan terlebih dulu, jadi import math_utility langsung menemukan tetangga — tanpa perlu subfolder.
Dari import ke Memanggil Fungsi
main.pyimport math_utilityPython memuatfile darifolder yang samamath_utility.add()math_utility.multiply()bisa dipanggilmuatselesai
Saat 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.

math_utility.py terlampir di kiri (buka dari 📂 Files untuk memeriksanya).

① Muat dengan import math_utility.

Panggil add(10, 20) tanpa prefiks modul secara sengaja dan konfirmasi dengan try/except bahwa kamu mendapat NameErrorimport math_utility hanya memasukkan nama math_utility itu sendiri ke scope main, jadi add tidak bisa dipanggil langsung.

③ Lalu cetak math_utility.add(10, 20) dan math_utility.multiply(5, 5) dengan prefiks nama modul — cara yang benar untuk memanggilnya.

Python Editor

Jalankan kode untuk melihat output

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).

Seperti Apa Memuat File Eksternal
main.pyimport math_utilitymath_utility.pyberjalan atas ke bawahmath_utility.add()bisa dipanggilmuatsetelahnya
Begitu main.py menemui 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__ Berubah Tergantung Bagaimana File Berjalan
__name__(variabel khususyang di-set Python)Dijalankan langsungpython xxx.py__name__= "__main__"Diimpor olehfile lain__name__= "xxx"(nama modul)
Variabel khusus __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.

math_utility_2.py yang terlampir mendefinisikan fungsi show_name() yang mencetak __name__-nya sendiri, plus blok if __name__ == "__main__": di bawahnya (buka dari 📂 Files untuk melihatnya).

① Dari sisi main, impor math_utility_2 dan cetak __name__ milik main.

② Panggil math_utility_2.show_name() dan periksa seperti apa __name__ dari sisi yang diimpor.

Python Editor

Jalankan kode untuk melihat output

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.

main.py Menggabungkan Dua Modul Buatan Sendiri
main.pyimport validatorimport formattervalidator.pyis_valid_price()formatter.pyformat_price()importimport
main.py mengimpor dua modul dengan import validator dan import formatter, lalu menggabungkan fungsi-fungsi mereka untuk satu pekerjaan.

Isi validator.py dan formatter.py yang terlampir, lalu impor keduanya dari main.py.

① Di validator.py, implementasikan is_valid_price(price) — kembalikan True jika price adalah int positif, False sebaliknya.

② Di formatter.py, implementasikan format_price(price) — terima int, tambahkan biaya tambahan 5% dengan int(price + price * 0.05), dan kembalikan string seperti "with tax: $1575".

③ Di main.py, impor keduanya. Tentukan apakah price = 1500 valid, format, dan cetak hasilnya.

Python Editor

Jalankan kode untuk melihat output

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.

QUIZ

Cek Pemahaman

Jawab setiap pertanyaan satu per satu.

Soal 1Pemetaan modul / package / library mana yang benar?

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")