Langsung ke konten

Import Module di Python: Memakai Kode dari File Lain

Import module memakai kode dari file lain. Artikel ini membahas import, from import, alias as, membuat module sendiri, dan if __name__ == '__main__'.

Belajar Python Level Basic
Belajar Python Level Basic
Advertisement

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 .py saat import — tulis import kalkulator, bukan import 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.py sendiri, bisa menimpa module aslinya.

Ringkasan

  • Module adalah file Python yang bisa dipakai oleh file lain
  • import nama mengimpor module utuh, from nama import fungsi mengambil bagian tertentu
  • Alias dengan as mempersingkat nama module
  • Hindari from module import * karena menyamarkan asal nama
  • Module sendiri dibuat cukup dengan membuat file .py di 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.