Untuk membuat sebuah modul dapat digunakan, Anda harus meng-import-nya (seperti mengambil buku dari rak). Mengimpor sebuah modul dilakukan dengan menggunakan instruksi yang disebut import. Catatan: import juga merupakan sebuah kata kunci (dengan semua konsekuensi dari fakta ini).
Mari kita anggap bahwa Anda ingin menggunakan dua entitas yang disediakan oleh modul math:
simbol (konstan) yang mewakili nilai π yang tepat (seakurat mungkin menggunakan aritmatika titik mengambang ganda) (meskipun menggunakan huruf Yunani untuk memberi nama variabel sepenuhnya dimungkinkan dalam Python, simbol dinamai pi - ini adalah solusi yang lebih nyaman, terutama untuk bagian dunia yang tidak memiliki atau tidak akan menggunakan papan tik Yunani)
fungsi bernama sin() (setara komputer dari fungsi sinus matematika)
Kedua entitas ini tersedia melalui modul math, tetapi cara Anda dapat menggunakannya sangat bergantung pada bagaimana impor dilakukan.
Cara termudah untuk mengimpor modul tertentu adalah dengan menggunakan instruksi impor sebagai berikut:
Klausa ini berisi:
kata kunci "import";
nama modul yang akan diimpor.
Instruksi ini dapat ditempatkan di mana saja dalam kode Anda, tetapi harus ditempatkan sebelum penggunaan pertama dari entitas modul.
Jika Anda ingin (atau harus) mengimpor lebih dari satu modul, Anda dapat melakukannya dengan mengulangi klausa import (direkomendasikan):
atau dengan menyebutkan modul-modul setelah kata kunci import, seperti di sini:
Instruksi tersebut mengimpor dua modul, pertama modul yang bernama math dan kemudian modul kedua yang bernama sys.
Daftar modul dapat berupa sejumlah besar modul.
Untuk melanjutkan, Anda perlu mengenal sebuah istilah penting: namespace. Jangan khawatir, kami tidak akan membahas secara detail - penjelasan ini akan sependek mungkin.
Namespace adalah ruang (dalam konteks non-fisik) di mana beberapa nama ada dan nama-nama tersebut tidak saling bertabrakan (misalnya, tidak ada dua objek yang berbeda dengan nama yang sama). Kita bisa mengatakan bahwa setiap kelompok sosial adalah sebuah namespace - kelompok tersebut cenderung memberikan nama yang unik untuk setiap anggotanya (misalnya, orang tua tidak akan memberikan nama depan yang sama untuk anak-anak mereka).
Keunikan ini dapat dicapai dengan banyak cara, misalnya dengan menggunakan nama panggilan bersama dengan nama pertama (akan berfungsi di dalam sebuah kelompok kecil seperti sebuah kelas di sebuah sekolah) atau dengan menetapkan pengidentifikasi khusus untuk semua anggota kelompok (Nomor Keamanan Sosial AS adalah contoh baik dari praktik tersebut).
Dalam sebuah namespace tertentu, setiap nama harus tetap unik. Ini bisa berarti bahwa beberapa nama dapat menghilang ketika entitas lain dengan nama yang sudah diketahui memasuki namespace tersebut. Kami akan menunjukkan cara kerjanya dan bagaimana mengendalikannya, tetapi pertama-tama mari kita kembali ke impor.
Jika modul dengan nama tertentu ada dan dapat diakses (sebenarnya modul adalah file sumber Python), Python mengimpor isinya, yaitu semua nama yang didefinisikan dalam modul menjadi dikenal, tetapi mereka tidak memasuki namespace kode Anda.
Ini berarti bahwa Anda dapat memiliki entitas Anda sendiri yang diberi nama sin atau pi dan mereka tidak akan terpengaruh oleh impor dengan cara apa pun.
Pada saat ini, mungkin Anda bertanya-tanya bagaimana cara mengakses pi yang berasal dari modul math.
Untuk melakukan ini, Anda harus menyertakan nama modul asli dari pi sebagai kualifikasi.
Lihat potongan kode di bawah ini, ini adalah cara di mana Anda memenuhi syaratkan nama-nama pi dan sin dengan nama modul asalnya:
Ini sederhana, Anda menempatkan:
nama modul (mis. math)
titik (yaitu .)
nama entitas (mis. pi)
Bentuk seperti itu jelas menunjukkan namespace di mana nama tersebut ada.
Catatan: penggunaan kualifikasi ini wajib jika modul telah diimpor oleh instruksi modul import. Tidak masalah jika salah satu nama dari kode Anda dan dari namespace modul saling bertentangan atau tidak.
Contoh pertama ini tidak akan terlalu canggih - kami hanya ingin mencetak nilai sin(½π).
Lihat kode di editor. Inilah cara kami mengujinya.
Kode menghasilkan nilai yang diharapkan: 1.0.
Catatan: menghapus salah satu dari dua kualifikasi akan membuat kode salah. Tidak ada cara lain untuk memasuki namespace math jika Anda melakukan hal berikut:
Sekarang kita akan menunjukkan bagaimana dua namespace (milik Anda dan modul) dapat hidup berdampingan.
Lihatlah contoh di jendela editor.
Kami telah mendefinisikan pi dan sin kami sendiri di sini.
Jalankan program. Kode harus menghasilkan output berikut:
Seperti yang dapat Anda lihat, entitas tidak saling mempengaruhi.
Pada metode kedua, sintaks import secara tepat menunjukkan entitas (atau beberapa entitas) modul mana yang dapat diterima dalam kode:
Instruksi terdiri dari elemen-elemen berikut:
kata kunci from;
nama modul yang akan diimpor (secara selektif);
kata kunci import;
nama atau daftar nama entitas yang diimpor ke dalam namespace.
Instruksi ini memiliki efek sebagai berikut:
entitas yang terdaftar (dan hanya itu) diimpor dari modul yang ditunjukkan;
nama-nama entitas yang diimpor dapat diakses tanpa kualifikasi.
Catatan: tidak ada entitas lain yang diimpor. Selain itu, Anda tidak dapat mengimpor entitas tambahan dengan menggunakan kualifikasi - baris seperti ini:
akan menyebabkan kesalahan (e adalah bilangan Euler: 2,71828...)
Mari kita menulis ulang skrip sebelumnya untuk menggabungkan teknik baru ini.
Berikut ini:
Output-nya seharusnya sama seperti sebelumnya, karena kenyataannya kami telah menggunakan entity yang sama seperti sebelumnya: 1.0. Salin kode, tempelkan di editor, dan jalankan program.
Apakah kode terlihat lebih sederhana? Mungkin, tetapi tampilannya bukanlah satu-satunya efek dari jenis impor ini. Mari kami tunjukkan pada Anda.
Lihat kode di editor. Analisis dengan cermat:
baris 1: lakukan impor selektif;
baris 3: gunakan entitas yang diimpor dan dapatkan hasil yang diharapkan (1,0)
baris 5 hingga 12: mendefinisikan kembali arti pi dan sin - pada dasarnya, mereka menggantikan definisi asli (yang diimpor) dalam namespace kode;
baris 15: mendapatkan 0,99999999, yang mengkonfirmasi kesimpulan kita.
Mari kita lakukan tes lain. Lihat kode di bawah ini:
Di sini, kita telah membalikkan urutan operasi kode:
baris 1 hingga 8: mendefinisikan pi dan sin kita sendiri;
baris 11: menggunakan keduanya (0,99999999 muncul di layar)
baris 13: melaksanakan impor - simbol yang diimpor menggantikan definisi sebelumnya dalam namespace;
baris 15: mendapatkan hasil 1,0.