Module & Import — Python

Module & Import Module adalah file Python yang berisi definisi dan statement. Package adalah folder berisi module. Import Module import math…

Module adalah file Python biasa yang isinya (fungsi, class, variabel) bisa dipakai file lain lewat import. Bayangin buku catatan Warung Kopi Pak Darto yang makin tebal. Pak Darto memecahnya jadi dua: buku aturan (aturan diskon, daftar menu) yang disimpan di rak, dan buku kasir yang dipakai tiap hari. Kasir gak menyalin aturan diskon ke bukunya. Dia cukup mengambil buku aturan dari rak saat butuh. warung.py itu buku aturannya, kasir.py buku kasirnya, dan import itu mengambil buku dari rak.

🧪 Tebakan cepat: warung.py berisi fungsi diskon dan satu baris tes di luar fungsi: print("Tes diskon(89000):", diskon(89000)). kasir.py cuma meng-import warung, lalu mencetak diskon untuk belanja 89.000. Waktu python3 kasir.py dijalankan, baris tes dari warung.py ikut tercetak atau gak? Tebak dulu, jawabannya ada di bagian "if __name__ == "__main__"".

Satu file, satu module

Dua file di folder yang sama. warung.py berisi fungsi diskon dari pelajaran if/elif:

def diskon(total):
    if total >= 100000:
        return 15
    elif total >= 50000:
        return 10
    elif total >= 25000:
        return 5
    return 0

kasir.py memakainya:

import warung

total = 89000
print("Diskon:", warung.diskon(total), "persen")
$ python3 kasir.py
Diskon: 10 persen

Tiga cara import

Cara menulis Cara memakai Kapan dipakai
import warung warung.diskon(89000) Asal tiap nama jelas terlihat
from warung import diskon diskon(89000) Butuh satu dua nama, dipakai sering
import warung as w w.diskon(89000) Nama module panjang

Module bawaan Python

Python sudah membawa banyak module yang tinggal di-import, disebut standard library:

import math
print(math.sqrt(16))    # 4.0
print(math.ceil(4.2))   # 5
print(math.floor(4.8))  # 4

from math import sqrt
print(sqrt(25))         # 5.0

if __name__ == "__main__"

Tiap module punya variabel bawaan bernama __name__. Isinya tergantung cara file itu dipakai: dijalankan langsung (python3 warung.py) berarti "__main__", di-import file lain berarti nama module-nya, "warung". Tambahkan dua baris ini di bawah fungsi diskon di warung.py:

print("__name__ di warung.py:", __name__)
print("Tes diskon(89000):", diskon(89000))
$ python3 warung.py
__name__ di warung.py: __main__
Tes diskon(89000): 10
$ python3 kasir.py
__name__ di warung.py: warung
Tes diskon(89000): 10
Diskon: 10 persen

Baris tesnya ikut tercetak saat kasir.py dijalankan, karena import warung menjalankan seluruh isi warung.py. Itu jawaban tebakannya. Bungkus kode tes dengan if:

if __name__ == "__main__":
    print("Tes diskon(89000):", diskon(89000))

⚠️ Jebakan yang sering ketemu

Traceback (most recent call last):
  File "/home/darto/kasir.py", line 1, in <module>
    import warug
ModuleNotFoundError: No module named 'warug'

TL;DR: Tiap file .py adalah module, namanya nama file tanpa .py. import warung menjalankan warung.py sekali dan isinya dipakai lewat warung.diskon(...); from warung import diskon mengambil namanya langsung, jadi dipakai tanpa awalan (from math import sqrt lalu sqrt(16)); import warung as w memberi nama pendek. Module bawaan seperti math, random, datetime, dan json tinggal di-import. __name__ berisi "__main__" kalau file dijalankan langsung dan nama module-nya kalau di-import, jadi kode di bawah if __name__ == "__main__": cuma jalan saat file itu dijalankan langsung. Salah nama module jadi ModuleNotFoundError, dan file yang namanya sama dengan module bawaan menutupi module itu.

Yang akan kamu pelajari