Artikel ini bagian dari seri Belajar Python Level Basic di hanifmu.com. Di artikel sebelumnya kita sudah membahas CSV dan JSON. Sekarang kita pecah program menjadi beberapa file.
Menulis semua kode dalam satu file lama-lama tidak nyaman. Function yang sama ingin dipakai di dua program, tapi menyalinnya ke setiap file membuat perbaikan harus dilakukan berkali-kali. Module menyelesaikan masalah itu.
Apa itu Module?
Module adalah file Python yang berisi kode, biasanya kumpulan function dan variabel, yang bisa dipakai oleh file lain. Setiap file .py sebenarnya sudah berupa module.
Untuk memakai isinya, gunakan kata kunci import diikuti nama file tanpa ekstensi .py:
import math
print(math.sqrt(16)) # 4.0
Di sini math adalah module bawaan Python. Setelah di-import, semua isinya bisa diakses lewat math. di depan nama function.
import
Bentuk paling sederhana adalah import nama_module:
import random
angka = random.randint(1, 10)
print(angka)
Keuntungan cara ini adalah jelas asal setiap function. Saat membaca random.randint, kamu langsung tahu randint berasal dari module random.
from … import
Kalau hanya butuh beberapa nama tertentu, gunakan from ... import:
from math import sqrt, pi
print(sqrt(25)) # 5.0
print(pi) # 3.141592653589793
Nama yang diimpor bisa dipakai langsung tanpa awalan module. Cara ini lebih singkat, tapi ada harganya: asal nama jadi kurang jelas saat kode mulai panjang.
Alias dengan as
Nama module bisa diganti dengan as:
import datetime as dt
sekarang = dt.datetime.now()
print(sekarang.year)
Alias berguna saat nama module panjang atau saat ada kebiasaan komunitas. Contoh yang paling sering ditemui adalah import numpy as np dan import pandas as pd di dunia data.
Alias juga bisa dipakai pada from ... import:
from math import sqrt as akar
print(akar(9)) # 3.0
Hindari import *
Ada satu bentuk lagi, yaitu from module import *, yang mengimpor semua nama sekaligus. Meski terlihat praktis, bentuk ini sebaiknya dihindari:
from math import *
print(sqrt(16)) # 4.0
Masalahnya, kamu tidak lagi tahu nama mana yang berasal dari module mana. Kalau dua module punya nama function yang sama, yang diimpor belakangan akan menimpa yang pertama tanpa peringatan. Sebutkan nama yang dibutuhkan secara eksplisit agar kode tetap jelas.
Membuat Module Sendiri
Module tidak harus berasal dari Python. Kamu bisa membuatnya sendiri. Cukup buat file .py berisi function, lalu import dari file lain di folder yang sama.
Misalnya file kalkulator.py:
# kalkulator.py
def tambah(a, b):
return a + b
def kurang(a, b):
return a - b
def kali(a, b):
return a * b
File itu bisa dipakai dari main.py yang berada di folder yang sama:
# main.py
import kalkulator
print(kalkulator.tambah(5, 3)) # 8
print(kalkulator.kali(4, 6)) # 24
Python mencari module di folder tempat skrip dijalankan, jadi kedua file harus berada di folder yang sama. Untuk kode yang lebih besar, module bisa dikelompokkan lagi menjadi package, yang akan dibahas di level lanjutan.
if name == “main”
Saat sebuah module di-import, seluruh kodenya dijalankan. Termasuk baris yang seharusnya hanya berjalan saat file itu dipakai langsung.
Perhatikan kalkulator.py berikut:
# kalkulator.py
def tambah(a, b):
return a + b
print("Module kalkulator dijalankan")
Kalau file ini di-import dari main.py, pesan Module kalkulator dijalankan ikut tercetak. Padahal kita hanya ingin memakai function tambah.
Solusinya adalah memeriksa variabel khusus __name__. Saat file dijalankan langsung, nilainya "__main__". Saat file di-import, nilainya adalah nama module itu sendiri.
# kalkulator.py
def tambah(a, b):
return a + b
def kurang(a, b):
return a - b
if __name__ == "__main__":
print("Kalkulator dijalankan langsung")
print(tambah(2, 3))
Dengan cara ini, baris di dalam blok if hanya berjalan kalau kalkulator.py dieksekusi langsung:
python kalkulator.py
Kalkulator dijalankan langsung
5
Kalau file itu di-import dari file lain, blok tersebut dilewati. Pola ini dipakai hampir di semua program Python agar satu file bisa berperan sebagai module sekaligus skrip yang bisa dijalankan.
Contoh Program: Module Bantuan
Mari buat module kecil untuk memformat teks, lalu pakai di program utama.
# format_teks.py
def kapital(teks):
return teks.upper()
def bersihkan(teks):
return teks.strip()
def ringkas(teks, maksimal=20):
if len(teks) <= maksimal:
return teks
return teks[:maksimal] + "..."
if __name__ == "__main__":
print(kapital("halo"))
# aplikasi.py
import format_teks
judul = " belajar python "
print(format_teks.kapital(format_teks.bersihkan(judul)))
print(format_teks.ringkas("Artikel ini sangat panjang sekali", 10))
Output saat aplikasi.py dijalankan:
BELAJAR PYTHON
Artikel in...
Module format_teks bisa dipakai ulang di program lain tanpa menyalin kodenya.
Kesalahan Umum Pemula
- Menulis ekstensi
.pysaat import — tulisimport kalkulator, bukanimport kalkulator.py. - Memakai
from ... import *— nama jadi tidak jelas asalnya; sebut yang dibutuhkan saja. - Meletakkan module di folder berbeda tanpa mengatur path — Python hanya mencari di folder skrip dan folder instalasi.
- Lupa
if __name__ == "__main__"— kode uji ikut berjalan saat module di-import. - Memberi nama module sama dengan module bawaan — misalnya
random.pysendiri, bisa menimpa module aslinya.
Ringkasan
- Module adalah file Python yang bisa dipakai oleh file lain
import namamengimpor module utuh,from nama import fungsimengambil bagian tertentu- Alias dengan
asmempersingkat nama module - Hindari
from module import *karena menyamarkan asal nama - Module sendiri dibuat cukup dengan membuat file
.pydi folder yang sama if __name__ == "__main__"membuat kode uji hanya berjalan saat file dijalankan langsung
Langkah Selanjutnya
Kamu sudah bisa memakai kode dari file lain, baik buatan sendiri maupun dari Python. Tapi Python sudah menyertakan banyak module siap pakai yang tidak perlu kamu tulis sendiri.
Artikel selanjutnya membahas Standard Library Python, kumpulan module bawaan untuk matematika, acak, tanggal, dan banyak lagi.
