Di Python, untuk memakai modul lain dalam modul yang kita buat, kita perlu mengimpor modul lain tersebut dengan perintah import seperti potongan kode berikut.
import sys
Modul bernama sys akan dapat dipakai setelah perintah di atas dijalankan. Sebagai contoh, argumen (parameter) saat mengeksekusi sebuah modul dapat diperoleh dari sys.argv yang merupakan sebuah list.
Jika nama modul yang ingin dipakai sudah diketahui dari awal, kita bisa menuliskannya secara langsung dalam kode yang kita buat. Namun bagaimana jika nama modul tersebut belum diketahui dari awal sehingga harus dapat diimpor belakangan secara dinamis?
Python menyediakan fasilitas ini melalui fungsi __import__ yang menerima parameter berupa nama modul dalam bentuk string. Berikut ini adalah cara menggunakannya.
import sys
__import__("sebuah.modul")
modul = sys.modules["sebuah.modul"]
Variabel modul di atas akan menjadi “perwakilan” dari modul bernama sebuah.modul. Melalui modul inilah isi dari modul sebuah.modul dapat diakses.
Berikut ini adalah contoh penggunaannya. Maaf kalau panjang :D Saya memiliki sebuah direktori dan 4 buah kode Python (modul) yang disusun sebagai berikut.
- sebut.py
+ angka/
- __init__.py
- satu.py
- dua.py
Bisa dilihat kita memiliki modul angka.satu dan angka.dua. Kita akan menggunakan dua modul ini untuk ujicoba impor secara dinamis. Isi modul pertama adalah seperti berikut.
def berapa():
return "satu"
Isi berkas dua.py mirip dengan yang di atas namun mengembalikan nilai "dua" bukan "satu".
def berapa():
return "dua"
Isi __init__.py bisa dibiarkan kosong.
Sekarang mari buat sebut.py yang akan menerima sebuah parameter berupa nama modul. Setelah modul didapat, fungsi berapa() akan dipanggil.
import sys
nama_modul = sys.argv[1]
__import__(nama_modul)
modul = sys.modules[nama_modul]
print modul.berapa()
Jika sebut.py dijalankan dengan angka.satu sebagai parameter, seharusnya kata satu akan dicetak. Begitu pula angka.dua yang akan menghasilkan kata dua.
$ python sebut.py angka.satu
satu
$ python sebut.py angka.dua
dua
Agar lebih yakin mengenai variabel-variabel yang ada dalam sebut.py, coba cetak nilai yang dikeluarkan oleh fungsi type.
print type(nama_modul)
print type(modul)
print modul.__name__
Jika dijalankan dengan angka.satu sebagai nama_modul, berikut inilah yang akan dihasilkan.
<type 'str'>
<type 'module'>
angka.satu
Bisa dilihat bahwa masukan nama_modul tetap berupa string, lalu modul yang diimpor memang benar berupa modul yang bernama angka.satu.
Sekian saja tutorial singkat dari saya. Kode lengkap bisa diunduh dari http://arsip.fajran.web.id/impor-modul.tar.gz. Semoga bermanfaat :)
0 komentar:
Poskan Komentar