Modul import di Python dengan Contoh

Isi kandungan:

Anonim

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 guru99.py, nama modul akan menjadi guru99 . 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 di Python?
  • Modul import Python
  • Bagaimana membuat dan mengimport modul di Python?
  • Mengimport Kelas di Python
  • Menggunakan modul untuk mengimport
  • Mengimport semuanya dari modul
  • Menggunakan modul import
  • Menggunakan import *
  • Fungsi dir ()
  • Pakej
  • PythonModuleSearchPath
  • Menggunakan alias modul dalam import
  • Import Mutlak dan Relatif di Python
  • MenggunakanAbsoluteImports
  • MenggunakanRelativeImports

Apakah modul import Python?

Fail dianggap sebagai modul dalam python. Untuk menggunakan modul, anda mesti mengimportnya menggunakan kata kunci import . 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.pydisplay.py

Langkah 1) Buat fail dan beri nama test.py

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

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

Langkah 3) Sekarang buat fail.py fail 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 testprint(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.pydisplay.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_nameself.model = modelself.manu_year = manu_yeardef 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 Carcar_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())

Pengeluaran:

BMWCar brand is BMWCar model is Z5Car manufacture year is 2020Car brand is BMWCar 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, iaitu fungsi dan nama pemboleh ubah yang diperlukan daripada 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.pydisplay.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_messageprint(display_message())

Pengeluaran:

Welcome to Guru99 Tutorials!

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

from test import display_messageprint(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 segala-galanya 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.pydisplay.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 testprint(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.

Pengeluaran:

Welcome to Guru99 Tutorials!All about Python!Guru99Mumbai

Menggunakan import *

Mari kita lihat contoh menggunakan import * . Dengan menggunakan import * , 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)

Pengeluaran:

Welcome to Guru99 Tutorials!All about Python!Guru99Mumbai

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 ada 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.pytest.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_nameself.model = modelself.manu_year = manu_yeardef 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 Carclass_contents = dir(Car)print(class_contents)

Keluarannya 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 sama-sama mencuba modul json seperti yang ditunjukkan dalam contoh di bawah. Ia akan memaparkan semua sifat dan kaedah yang terdapat dalam modul json .

Import jsonjson_details = dir(json)print(json_details)

Pengeluaran:

['JSONDecodeError', 'JSONDecoder', 'JSONEncoder', '__all__', '__author__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', '__version__', '_default_decoder', '_default_encoder', 'codecs', 'decoder', 'detect_encoding', 'dump', 'dumps', 'encoder', 'load', 'loads', 'scanner']

Pakej

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

Nama pakej 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 mod1print(mod1.mod1_func1())print(mod1.mod1_func2())print(mod1.mod1_func2())

Pengeluaran:

Welcome to Module1 function1NoneWelcome to Module1 function2NoneWelcome to Module1 function2None

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

Laluan Pencarian Modul Python

Semasa pelaksanaan, ketika python menemui nama modul import , jurubahasa cuba mencari modul tersebut. 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:

importsysprint(sys.path)

Pengeluaran:

['Python Latest\\task2', 'Users\\AppData\\Local\\Programs\\Python\\Python37\\python37.zip', 'Users\\AppData\\Local\\Programs\\Python\\Python37\\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 padanya. Alias ​​boleh dilakukan dengan menggunakan kata kunci.

Sintaks:

import filename as alias name

Struktur folder untuk menguji kodnya adalah seperti berikut:

Mod test/test.pydisplay.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 tprint(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.

Pengeluaran:

Welcome to Guru99 Tutorials!All about Python!Guru99Mumbai

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.

  • Dalam module1.py, terdapat fungsicalledmyfunc1.
  • Di module2.py, ada fungsicalledmyfunc2.
  • Di 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 myfunc1orfrom package1 import module1module1.myfunc1()

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

from package1.subpkg.module3 import myfunc3orfrom package1.subpkg import module3module3.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 pada struktur struktur folder yang disebutkan di atas, kita mempunyai modul berikut dengan fungsinya, yang perlu kita rujuk.

  • Dalam module1.py, terdapat fungsicalledmyfunc1.
  • Di module2.py, ada fungsicalledmyfunc2.
  • Di 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 semasa, import dapat dipendekkan berbanding dengan import mutlak.

Kelemahan Import Relatif

Kekurangan:

  • Dengan menggunakan import relatif, sukar untuk menelusuri semula kod tersebut

Ringkasan:

  • Import di Python membantu anda merujuk kepada kod, iaitu .fungsi / objek yang ditulis dalam fail lain. Ia juga digunakan untuk mengimport pustaka python / paket 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 adalah 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, dan lain-lain disebut sebagai modul.
  • Anda hanya boleh mengimport sebahagian kecil modul, iaitu hanya 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 padanya. 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 menemui nama modul import , jurubahasa cuba mencari modul tersebut. 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.