Sejauh ini seluruh kode program kita berada di satu file yang menuliskan segalanya dari nol. Program nyata membutuhkan kemampuan yang jauh lebih luas: perhitungan matematika, pengolahan tanggal, pembacaan file, hingga akses jaringan. Python menyediakan kemampuan tersebut dalam bentuk module — file berisi function dan konstanta siap pakai — yang tinggal kita impor ke dalam program. Pada Chapter ini kita mempelajari cara mengimpor module serta apa yang sebenarnya dilakukan interpreter Python di balik statement import.
Module: Kode Siap Pakai dalam Satu File #
Module adalah file .py yang berisi definisi — function, konstanta, sampai class — yang dapat dipakai oleh program lain. Sebagian module ditulis oleh pengembang Python dan sudah terpasang bersama interpreter; kumpulan resminya disebut standard library. Module math adalah salah satu anggotanya yang paling sering dipakai.
Kita coba langsung di REPL:
>>> import math
>>> math.sqrt(25)
5.0
>>> math.floor(9.81)
9
>>> math.ceil(9.81)
10Statement import math memuat module math, lalu nama math menjadi pengenal yang bisa kita pakai. Untuk mengakses isinya, kita menulis nama module, titik, lalu nama function atau konstanta yang dibutuhkan — misalnya math.sqrt(25) memanggil function sqrt() milik module math.
Tiga Bentuk Dasar Import #
Ada tiga bentuk dasar yang perlu dikuasai sejak awal:
| Bentuk | Contoh | Cara memakai isi module |
|---|---|---|
import nama_module | import math | math.sqrt(25) |
import nama as alias | import math as mtk | mtk.sqrt(25) |
from nama import sesuatu | from math import sqrt | sqrt(25) |
Bentuk from ... import ... menyalin nama tertentu dari module sehingga kita tidak perlu awalan math.:
from math import sqrt, pi
print(sqrt(25))
print(pi)Output yang Dihasilkan:
5.0
3.141592653589793Satu statement from math import sqrt, pi mengimpor dua nama sekaligus — cukup pisahkan dengan koma. Setelah itu sqrt dan pi dipakai layaknya nama yang kita definisikan sendiri.
Bentuk alias dengan as memberi nama lain pada module yang diimpor:
import math as mtk
print(mtk.sqrt(144))Output yang Dihasilkan:
12.0Alias paling berguna untuk nama yang panjang. Komunitas Python juga punya kesepakatan alias yang sangat mapan di industri, misalnya import numpy as np dan import pandas as pd saat bekerja dengan pustaka data.
Apa yang Terjadi Saat import Dijalankan #
Statement import bukan sekadar “menempelkan” teks dari file lain. Interpreter Python menjalankan tiga langkah berurutan:
- Mencari module di serangkaian lokasi berurutan — daftar lokasi ini dibedah tuntas pada Chapter Module Search Path.
- Menjalankan seluruh kode tingkat atas di dalam file module itu, tepat satu kali.
- Menyimpan module object ke dalam cache bernama
sys.modulessupaya import berikutnya tidak mengulang pekerjaan.
Konsekuensi langkah kedua bisa kita lihat langsung. Buat file penghitung.py berikut:
print("Module penghitung dimuat")
def hitung_luas(sisi):
return sisi * sisiLalu jalankan program.py yang mengimpornya dua kali:
import penghitung
import penghitung # import kedua: kode tidak dijalankan ulang
print(penghitung.hitung_luas(4))Output yang Dihasilkan:
Module penghitung dimuat
16Kalimat Module penghitung dimuat hanya muncul sekali meskipun ada dua statement import penghitung. Mari kita telaah alasannya:
- Baris 1 (
import penghitung): interpreter mencaripenghitung, menjalankan seluruh isi file-nya (termasukprint), lalu menyimpan module object kesys.modules. - Baris 2 (
import penghitung): interpreter menemukanpenghitungsudah ada di cache, jadi file tidak dibaca dan dijalankan ulang — statement ini praktis gratis. - Baris 4 (
print(...)): functionhitung_luasdipanggil dengan argument4dan mengembalikan16.
Kehadiran cache ini bisa dibuktikan langsung:
import sys
print("Sebelum import:", "math" in sys.modules)
import math
print("Setelah import:", "math" in sys.modules)Output yang Dihasilkan:
Sebelum import: False
Setelah import: TrueSebelum statement import math berjalan, string "math" belum ada di dictionary sys.modules. Setelah import pertama, module object tersimpan di sana — import math di baris mana pun setelahnya cukup mengambil objek yang sama dari cache.
Dengan pola dasar ini, kita siap membuat module sendiri — topik Chapter berikutnya. Untuk menjelajahi isi module yang belum dikenal, kita akan memakai alat bantu dir() dan help() pada Chapter Module Discovery.