Modul import di Python dengan Contoh

Apakah modul di Python?

Modul adalah fail dengan kod python. Kodnya boleh dalam bentuk pemboleh ubah, fungsi, atau kelas yang ditentukan. Nama fail menjadi nama modul.

Contohnya, jika nama fail anda adalah on2vhf.py, nama modulnya adalah on2vhf . Dengan fungsi modul, anda boleh memecahkan kod anda ke dalam fail yang berbeza dan bukannya menuliskan semua perkara di dalam satu fail.

Dalam tutorial ini, anda akan belajar:

Apakah modul import Python?

Fail dianggap sebagai modul dalam python. Untuk menggunakan modul, anda mesti mengimportnya dengan menggunakan pengimportan kata kunci. Fungsi atau pemboleh ubah yang terdapat di dalam fail dapat digunakan dalam file lain dengan mengimport modul. Fungsi ini tersedia dalam bahasa lain, seperti tulisan taip, JavaScript, java, ruby, dll.

Bagaimana membuat dan mengimport modul di Python?

Sekarang kita akan membuat modul dan mengimportnya dalam fail lain.

Berikut adalah aliran untuk membuat dan mengimport modul seperti yang ditunjukkan dalam tangkapan skrin:

Ikuti langkah yang diberikan untuk membuat modul di python.

Struktur folder yang digunakan untuk menguji kodnya adalah seperti berikut:

 modtest/ test.py display.py 

Langkah 1) Buat fail dan beri nama test.py

Langkah 2) Di dalam test.py buat fungsi yang dipanggil display_message ()

 Def display_message(): return 'Welcome to Guru99 Tutorials!' 

Langkah 3) Sekarang buat fail.py yang lain.

Langkah 4) Di dalam display.py import fail moduletest.py, seperti gambar di bawah:

 import test 

Semasa mengimport, anda tidak perlu menyebut test.py tetapi hanya nama failnya.

Langkah5)

Kemudian anda boleh memanggil fungsi display_message () dari test.py di dalam display.py, anda perlu menggunakan modul_name.function_name.

Contohnya test.display_message ().

 Import test print(test.display_message()) 

Langkah 6)

Apabila anda melaksanakan display.py, anda akan mendapat output berikut:

 Welcome to Guru99 Tutorials! 

Mengimport Kelas di Python

Sebelumnya, kita telah melihat modul sederhana dengan fungsi. Di sini akan membuat kelas dan merujuk kelas di dalam fail lain.

Struktur folder untuk menguji kodnya adalah seperti berikut:

 myproj/ Car.py display.py 

Buat fail bernama Car.py dengan kod berikut:

Nama Fail: Car.py

 class Car: brand_name = 'BMW' model = 'Z4' manu_year = '2020' def __init__(self, brand_name, model, manu_year): self.brand_name = brand_name self.model = model self.manu_year = manu_year def car_details(self): print('Car brand is ', self.brand_name) print('Car model is ', self.model) print('Car manufacture year is ', self.manu_year) def get_Car_brand(self): print('Car brand is ', self.brand_name) def get_Car_model(self): print('Car model is ', self.model) 

Dalam fail Car.py, terdapat atribut brand_name, model dan manu_year. Fungsi yang ditentukan dalam kelas adalah car_details (), get_Car_brand (), get_Car_model ().

Mari kita sekarang menggunakan fail Car.py sebagai modul dalam fail lain yang disebut display.py.

Nama fail: display.py

 import Car car_det = Car.Car('BMW','Z5', 2020) print(car_det.brand_name) print(car_det.car_details()) print(car_det.get_Car_brand()) print(car_det.get_Car_model()) 

Keluaran:

 BMW Car brand is BMW Car model is Z5 Car manufacture year is 2020 Car brand is BMW Car model is Z5 

Oleh itu, kita dapat mengakses semua pemboleh ubah dan fungsi dari Car.py menggunakan modul Car.

Menggunakan modul untuk mengimport

Anda hanya boleh mengimport sebahagian kecil modul, hanya fungsi yang diperlukan dan nama pemboleh ubah dari modul dan bukannya mengimport kod penuh.

Apabila anda hanya mahu perkara tertentu diimport, anda boleh menggunakan kata kunci 'dari' untuk mengimport apa yang anda mahukan.

Jadi sintaksnya adalah

 from module import your function_name , variables,... etc. 

Struktur folder yang digunakan untuk menguji kodnya adalah seperti berikut:

 modtest/ test.py display.py 

Dalam test.py terdapat 2 fungsi seperti yang ditunjukkan:

Nama fail: test.py

 defdisplay_message(): return 'Welcome to Guru99 Tutorials!' def display_message1(): return 'All about Python!' 

Sekarang anda mahu fungsi display_message (). Fungsi atau pemboleh ubah yang anda impor dapat diakses secara langsung seperti gambar di bawah:

Nama Fail: display.py

 from test import display_message print(display_message()) 

Pengeluaran:

 Welcome to Guru99 Tutorials! 

Sekarang jika anda kebetulan menggunakan fungsi display_message1 (), ini akan menyebabkan ralat bahawa fungsi tersebut tidak ditentukan seperti yang ditunjukkan di bawah:

 from test import display_message print(display_message1()) 

Pengeluaran:

 Traceback (most recent call last): File 'display.py', line 3, in print(display_message1()) Name Error: name 'display_message1' is not defined 

Mengimport semuanya dari modul

Import membolehkan anda mengimport modul penuh dengan menggunakan import diikuti dengan nama modul, iaitu nama fail atau perpustakaan yang akan digunakan.

Sintaks:

 Import module 

Atau dengan menggunakan

 from module import * 

Struktur folder yang digunakan untuk menguji kodnya adalah seperti berikut:

 modtest/ test.py display.py 

Berikut adalah butiran kod di dalam test.py

 my_name = 'Guru99' my_address = 'Mumbai' defdisplay_message(): return 'Welcome to Guru99 Tutorials!' def display_message1(): return 'All about Python!' 

Menggunakan modul import

Dengan hanya menggunakan nama modul import, untuk merujuk kepada pemboleh ubah dan fungsi di dalam modul, ia harus awalan dengan nama modul.

Contohnya

Nama fail: display.py

 Import test print(test.display_message()) print(test.display_message1()) print(test.my_name) print(test.my_address) 

Uji nama modul digunakan untuk merujuk kepada fungsi dan pemboleh ubah di dalam ujian modul.

Keluaran:

 Welcome to Guru99 Tutorials! All about Python! Guru99 Mumbai 

Menggunakan import *

Mari kita lihat contoh menggunakan mengimport * . Menggunakan mengimport * , fungsi dan pemboleh ubah dapat diakses secara langsung, seperti yang ditunjukkan dalam contoh di bawah:

 from test import * print(display_message()) print(display_message1()) print(my_name) print(my_address) 

Keluaran:

 Welcome to Guru99 Tutorials! All about Python! Guru99 Mumbai 

Fungsi dir ()

Dir () adalah fungsi terbina dalam python. Dir () mengembalikan semua sifat dan kaedah, termasuk sifat terbina dalam objek yang diberikan.

Jadi apabila dir () digunakan pada modul, ia akan memberi anda pemboleh ubah, fungsi yang terdapat di dalam modul.

Berikut adalah contoh kerja dir () pada modul. Kami mempunyai kelas bernama Car.py, marilah kita mengimport Kereta dan menetapkan kepada dir () untuk melihat hasilnya.

Struktur folder untuk menguji kodnya adalah seperti berikut:

 test prop/ Car.py test.py 

Nama Fail: Car.py

 class Car: brand_name = 'BMW' model = 'Z4' manu_year = '2020' def __init__(self, brand_name, model, manu_year): self.brand_name = brand_name self.model = model self.manu_year = manu_year def car_details(self): print('Car brand is ', self.brand_name) print('Car model is ', self.model) print('Car manufacture year is ', self.manu_year) def get_Car_brand(self): print('Car brand is ', self.brand_name) def get_Car_model(self): print('Car model is ', self.model) 

Nama fail: test.py

 import Car class_contents = dir(Car) print(class_contents) 

Keluaran memberi kita nama kelas dan semua fungsi yang ditentukan dalam Car.py.

Anda juga boleh mencuba menggunakan dir () pada modul bawaan yang terdapat di Python. Mari kita sama-sama mencuba json modul seperti yang ditunjukkan dalam contoh di bawah. Ia akan memaparkan semua sifat dan kaedah yang ada di json modul.

 Import json json_details = dir(json) print(json_details) 

Keluaran:

 ['JSONDecodeError', 'JSONDecoder', 'JSONEncoder', '__all__', '__author__', '__bu iltins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__pac kage__', '__path__', '__spec__', '__version__', '_default_decoder', '_default_en coder', 'codecs', 'decoder', 'detect_encoding', 'dump', 'dumps', 'encoder', 'loa d', 'loads', 'scanner'] 

Pakej

Pakej adalah direktori dengan semua modul yang ditentukan di dalamnya. Untuk menjadikan jurubahasa Python menganggapnya sebagai pakej, direktori anda harus mempunyai init.pyfile. Init.py menjadikan direktori sebagai pakej. Inilah susun atur pakej yang akan kami jalankan.

Nama pakejnya adalah pakej saya . Untuk mula bekerja dengan paket, buat direktori yang disebut paket /. Di dalam direktori, buat fail kosong bernama __init__.py. Buat 3 fail lagi modul1.py, modul2.py, dan modul3.py dan tentukan fungsi seperti yang ditunjukkan dalam tangkapan skrin. Berikut adalah perincian modul1.py, modul2.py dan modul3.py

modul1.py

 def mod1_func1(): print('Welcome to Module1 function1') def mod1_func2(): print('Welcome to Module1 function2') def mod1_func3(): print('Welcome to Module1 function3') 

modul2.py

 def mod2_func1(): print('Welcome to Module2 function1') def mod2_func2(): print('Welcome to Module2 function2') def mod2_func3(): print('Welcome to Module2 function3') 

modul3.py

 def mod3_func1(): print('Welcome to Module3 function1') def mod3_func2(): print('Welcome to Module3 function2') def mod3_func3(): print('Welcome to Module3 function3') 

The pakej s sedia untuk digunakan. Sekarang panggil pakej di dalam mana-mana fail anda seperti yang ditunjukkan di bawah: test.py:

Di sini, mypackage.module1 diimport dan diberi nama alias sebagai mod1. Begitu juga, anda boleh menggunakan modul2.py dan modul3.py yang lain dari pakej saya.

 import mypackage.module1 as mod1 print(mod1.mod1_func1()) print(mod1.mod1_func2()) print(mod1.mod1_func2()) 

Keluaran:

 Welcome to Module1 function1 None Welcome to Module1 function2 None Welcome to Module1 function2 None 

Kami baru saja menunjukkan pakej dengan modul sederhana dengan fungsi di dalamnya. Sesuai dengan projek anda, anda juga dapat mengemas dengan sub-paket. Sub-folder / mempunyai modul dengan kelas yang ditentukan.

Laluan Pencarian Modul Python

Semasa pelaksanaan, ketika python terserempak nama modul import , jurubahasa cuba mencari modul. Ia mencari modul dalam senarai modul bawaan. Nantinya, direktori yang ditentukan di dalam sys.path.

Kesimpulannya, jurubahasa melakukan carian berikut untuk mencari modul:

  1. Di direktori semasa anda.
  2. Dalam senarai modul bina dalam
  3. Di dalam direktori sys.path

Anda boleh mendapatkan perincian sys.path dengan mengimport modul sys dan mencetak sys.path. Ini akan memberi anda senarai direktori seperti yang ditunjukkan di bawah:

 importsys print(sys.path) 

Keluaran:

 ['Python Latest\task2', 'Users\AppData\Local\Programs\Python Python37\python37.zip', 'Users\AppData\Local\Programs\Python\P ython37\DLLs'] 

Anda juga boleh mengubah jalan dan menyimpan direktori mengikut keperluan anda.

Menggunakan alias modul dalam import

Anda juga boleh menukar nama modul ke bentuk yang lebih pendek dengan memberikan nama alias kepadanya. Alias ​​boleh dilakukan dengan menggunakan kata kunci.

Sintaks:

 import filename as alias name 

Struktur folder untuk menguji kodnya adalah seperti berikut:

 Mod test/ test.py display.py 

Berikut adalah kod di dalam test.py

 my_name = 'Guru99' my_address = 'Mumbai' def display_message(): return 'Welcome to Guru99 Tutorials!' def display_message1(): return 'All about Python!' 

Sekarang akan menggunakan alias untuk test.py di display.py

 Import test as t print(t.display_message()) print(t.display_message1()) print(t.my_name) print(t.my_address) 

Alias ​​yang digunakan untuk modul ujian ialah t. Jadi fungsi dan pemboleh ubah dari test.py boleh dirujuk menggunakan alias t.

Keluaran:

 Welcome to Guru99 Tutorials! All about Python! Guru99 Mumbai 

Import Mutlak dan Relatif di Python

Anda sekarang tahu cara mengimport fail sebagai modul di dalam fail lain. Mari kita lihat bagaimana menguruskan fail yang terdapat dalam folder. Fail dalam folder boleh diimport dengan menggunakan import mutlak atau relatif.

Pertimbangkan anda mempunyai struktur folder projek anda, seperti yang ditunjukkan di bawah:

Folder root adalah projek saya /. Ia mempunyai dua subfolder package1 dan package2.

Pakej folder1 mempunyai dua modul, modul1.py dan modul2.py.

Pakej folder2 mempunyai satu kelas myclass.py, subpakej sub-pakej dengan modul3.py, dan modul4.py terakhir.

  • Di module1.py, terdapat fungsicalledmyfunc1.
  • Di module2.py, ada fungsicalledmyfunc2.
  • Dalam module3.py, terdapat fungsicalledmyfunc3.
  • Di module4.py, terdapat fungsicalledmyfunc4.

Menggunakan Import Mutlak

Untuk import Mutlak, anda perlu menambahkan keseluruhan jalan modul anda dari folder root projek.

Mari kita lihat bagaimana memanfaatkan import mutlak untuk merujuk kepada fungsi yang terdapat dalam setiap modul.

Untuk bekerja dengan fungsimyfunc1, anda perlu mengimport seperti berikut:

 from package1.module1 import myfunc1 or from package1 import module1 module1.myfunc1() 

Untuk bekerja dengan fungsi myfunc3, anda perlu mengimport seperti berikut:

 from package1.subpkg.module3 import myfunc3 or from package1.subpkg import module3 module3.myfunc3() 

Kelebihan dan Kekurangan menggunakan import mutlak

Berikut adalah kelebihan menggunakan import mutlak:

  • Menjadi mudah untuk mengesan kembali modul untuk pemeriksaan kod.
  • Mudah digunakan dan sangat mudah.
  • Sekiranya projek dipindahkan ke jalan yang lain, import tetap akan sama.

Kelemahan penggunaan import mutlak

Berikut adalah kelemahan menggunakan import mutlak:

Kekurangan:

  • Laluan import boleh menjadi sangat panjang, modul bersarang, dan jika nama modulnya panjang.

Menggunakan Import relatif

Dengan mempertimbangkan struktur folder yang sama seperti di bawah, kita akan melihat cara mengimport yang sama menggunakan import relatif.

Dalam import relatif, modul yang akan diimport adalah relatif dengan lokasi semasa iaitu lokasi di mana penyataan import ada.

Sintaks:

Dalam import relatif, anda perlu menambahkan titik (.) Sebelum nama modul semasa mengimport menggunakan dari .

Ia akan menjadi 2 tempoh (..) sebelum nama modul jika modul berada di satu tingkat dari lokasi semasa.

Merujuk kepada struktur struktur folder yang disebutkan di atas, kita mempunyai modul berikut dengan fungsinya, yang perlu kita rujuk.

  • Di module1.py, terdapat fungsicalledmyfunc1.
  • Di module2.py, ada fungsicalledmyfunc2.
  • Dalam module3.py, terdapat fungsicalledmyfunc3.
  • Di module4.py, terdapat fungsicalledmyfunc4.

Untuk bekerja dengan fungsimyfunc1, anda perlu mengimport seperti berikut:

 from .module1 import myfunc1 

Untuk bekerja dengan fungsi myfunc3, anda perlu mengimport seperti berikut:

 from .subpkg.module3 import myfunc3 

Kelebihan Import Relatif

Kelebihan:

  • Mudah untuk bekerja dengan import relatif.
  • Dari lokasi sekarang, import dapat dipendekkan berbanding dengan import mutlak.

Kelemahan Import Relatif

Kekurangan:

  • Dengan menggunakan import relatif, sukar untuk menelusuri tempat kod berada

Ringkasan:

  • Import di Python membantu anda merujuk kepada kod, iaitu .fungsi / objek yang ditulis dalam fail lain. Ia juga digunakan untuk mengimport pustaka python / pakej yang dipasang menggunakan pip (python package manager), dan anda perlu menggunakannya dalam kod anda.
  • Fungsi import tersedia dalam bahasa lain seperti naskhah huruf, JavaScript, java, ruby, dll.
  • Modul python adalah kod yang ditulis di dalam fail, misalnya (test.py). Di dalam fail anda, anda boleh menentukan pemboleh ubah, fungsi, atau kelas anda. Keseluruhan fail menjadi modul dan boleh diimport ke dalam fail lain untuk merujuk kodnya.
  • Dengan fungsi modul, anda boleh memecahkan kod anda ke dalam fail yang berbeza dan bukannya menuliskan semua perkara di dalam satu fail. Kemudian, dengan menggunakan import, anda boleh merujuk kod di dalam fail yang anda perlukan.
  • Python mempunyai modul bawaannya, dan juga perpustakaan / pakej luaran yang dipasang menggunakan python package manager (pip), misalnya, panda, NumPy, dll disebut sebagai modul.
  • Anda hanya boleh mengimport sebahagian kecil modul, iaitu fungsi dan nama pemboleh ubah yang diperlukan daripada modul dan bukannya mengimport kod penuh.
  • Anda juga boleh menukar nama modul ke bentuk yang lebih pendek dengan memberikan nama alias kepadanya. Alias ​​boleh dilakukan dengan menggunakan kata kunci.
  • Pakej adalah direktori dengan semua modul yang ditentukan di dalamnya. Untuk menjadikan jurubahasa Python menganggapnya sebagai pakej, direktori anda harus mempunyai __init.pyfile. Init.py menjadikan direktori sebagai pakej. Inilah susun atur pakej yang akan kami jalankan.
  • Semasa pelaksanaan, ketika python terserempak nama modul import , jurubahasa cuba mencari modul. Ia mencari modul dalam senarai modul bawaan. Nantinya, direktori yang ditentukan di dalam sys.path.
  • Untuk import Mutlak, anda perlu menambahkan keseluruhan jalan modul anda dari folder root projek.
  • Dalam import relatif, modul yang akan diimport adalah relatif dengan lokasi semasa iaitu lokasi di mana penyataan import ada.