Імпортувати модуль в Python з прикладами
⚡ Розумний підсумок
Імпорт в Python дозволяє одному файлу повторно використовувати змінні, функції та класи, визначені в іншому. Модуль — це просто файл .py, тоді як пакет групує пов'язані модулі всередині каталогу, позначеного файлом __init__.py.

У розділах нижче пояснюються модулі, пакети, різні стилі імпорту та те, як працює абсолютний та відносний імпорт у Python.
Що таке модулі Python?
Модуль — це файл із Python код. Код може бути у формі змінних, функцій або визначеного класу. Ім'я файлу стає назвою модуля.
Наприклад, якщо ім’я вашого файлу guru99.py, ім’я модуля буде гуру99. Завдяки функціям модуля ви можете розбити свій код на різні файли замість того, щоб записувати все в один файл.
Що таке Python модуль імпорту?
Файл вважається модулем у PythonЩоб використовувати модуль, його потрібно імпортувати за допомогою імпорт ключове слово. Функції або змінні, присутні у файлі, можна використовувати в іншому файлі шляхом імпорту модуля. Ця функціональність доступна в інших мовах, таких як TypeScript, Javaсценарій, Java, Ruby тощо.
Як створити та імпортувати модуль Python?
Тепер ми створимо модуль та імпортуємо його в інший файл.
Ось процес створення та імпорту модуля, як показано на знімку екрана:
Виконайте наведені кроки для створення модуля в Python.
Структура папок, яка використовується для перевірки коду, така:
modtest/ test.py display.py
Крок 1) Створіть файл і назвіть його test.py
Крок 2) Усередині test.py створіть функцію під назвою display_message()
Def display_message():
return "Welcome to Guru99 Tutorials!"
Крок 3) Тепер створіть інший файл display.py.
Крок 4) Всередині display.py імпортуйте файл модуля test.py, як показано нижче:
import test
Під час імпорту вам не потрібно згадувати test.py, лише назву файлу.
Крок 5) Тоді ви можете викликати функцію display_message() з test.py всередині display.py. Вам потрібно використовувати module_name.function_name.
Наприклад test.display_message().
Import test
print(test.display_message())
Крок 6) Коли ви запустите display.py, ви отримаєте наступне вихід:
Welcome to Guru99 Tutorials!
Імпортування класу в Python
Раніше ми розглядали простий модуль з функцією. Тут ми створимо клас і посилатимемося на клас всередині іншого файлу.
Структура папок для тестування коду така:
myproj/ Car.py display.py
Створіть файл під назвою Car.py із таким кодом:
Ім'я файлу: 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)
У файлі Car.py є атрибути brand_name, model та manu_year. Функції, визначені всередині класу: car_details(), get_Car_brand(), get_Car_model().
Давайте тепер використаємо файл Car.py як модуль в іншому файлі під назвою display.py.
Ім'я файлу: 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())
вихід:
BMW Car brand is BMW Car model is Z5 Car manufacture year is 2020 Car brand is BMW Car model is Z5
Отже, ми можемо отримати доступ до всіх змінних та функцій з Car.py за допомогою модуля Car.
Використання модуля імпорту from to
Ви можете імпортувати лише невелику частину модуля, тобто лише необхідні функції та назви змінних з модуля, замість імпорту повного коду.
Якщо ви хочете імпортувати лише певні елементи, ви можете скористатися ключовим словом «from», щоб імпортувати те, що вам потрібно.
Отже, синтаксис такий
from module import your function_name , variables,... etc.
Структура папок, яка використовується для перевірки коду, така:
modtest/ test.py display.py
У test.py є 2 функції, як показано:
Ім'я файлу: test.py
defdisplay_message(): return "Welcome to Guru99 Tutorials!" def display_message1(): return "All about Python!"
Тепер вам потрібна функція display_message(). Доступ до функції або змінної, яку ви імпортуєте, можна отримати безпосередньо, як показано нижче:
Ім'я файлу: display.py
from test import display_message print(display_message())
вихід:
Welcome to Guru99 Tutorials!
Тепер, якщо ви використаєте функцію display_message1(), вона викличе помилку, що функція не визначена, як показано нижче:
from test import display_message print(display_message1())
вихід:
Traceback (most recent call last): File "display.py", line 3, in <module> print(display_message1()) Name Error: name 'display_message1' is not defined
Імпорт всього з модуля
Імпорт дозволяє імпортувати повний модуль, використовуючи команду import, а потім назву модуля, тобто назву файлу або бібліотеку, яку потрібно використовувати.
Синтаксис:
Import module
Або за допомогою
from module import *
Структура папок, яка використовується для перевірки коду, така:
modtest/ test.py display.py
Нижче наведено деталі коду в test.py
my_name = "Guru99" my_address = "Mumbai" defdisplay_message(): return "Welcome to Guru99 Tutorials!" def display_message1(): return "All about Python!"
Використання модуля імпорту
Використовуючи лише назву модуля імпорту, щоб звернутися до змінних та функцій всередині модуля, потрібно додати перед ними назву модуля.
Приклад
Ім'я файлу: display.py
Import test print(test.display_message()) print(test.display_message1()) print(test.my_name) print(test.my_address)
Назва модуля test використовується для позначення функцій та змінних усередині модуля test.
вихід:
Welcome to Guru99 Tutorials! All about Python! Guru99 Mumbai
Використання імпорту *
Давайте розглянемо приклад використання імпорт *. Використання імпорт *, функції та змінні доступні безпосередньо, як показано в прикладі нижче:
from test import * print(display_message()) print(display_message1()) print(my_name) print(my_address)
вихід:
Welcome to Guru99 Tutorials! All about Python! Guru99 Mumbai
Функція dir().
dir() – це вбудована функція в PythonФункція dir() повертає всі властивості та методи, включаючи вбудовані властивості заданого об'єкта.
Отже, коли dir() використовується на модулі, він поверне вам змінні та функції, які присутні всередині модуля.
Ось робочий приклад dir() на модулі. У нас є клас під назвою Car.py, давайте імпортуємо Car та призначимо його до dir(), щоб побачити вивід.
Структура папок для перевірки коду буде такою:
test prop/ Car.py test.py
Ім'я файлу: 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)
Ім'я файлу: test.py
import Car class_contents = dir(Car) print(class_contents)
Вихід дає нам назву класу та всі функції, визначені в Car.py.
Ви також можете спробувати використати dir() у вбудованому модулі, доступному в PythonДавайте спробуємо те саме на json модуль, як показано в прикладі нижче. Він відобразить усі властивості та методи, доступні в json модуль
Import json
json_details = dir(json)
print(json_details)
вихід:
['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']
Пакети
Пакет — це каталог із усіма модулями, визначеними в ньому. Щоб зробити a Python інтерпретатор розглядає його як пакет, ваш каталог повинен містити файл __init__.py. __init__.py робить каталог пакетом. Ось макет пакета, над яким ми будемо працювати.
Назва пакета мій пакетЩоб розпочати роботу з пакетом, створіть каталог під назвою mypackage/. Усередині цього каталогу створіть порожній файл під назвою __init__.py. Створіть ще 3 файли module1.py, module2.py та module3.py та визначте функції, як показано на скріншоті. Ось детальна інформація про module1.py, module2.py та module3.py
module1.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")
module2.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")
module3.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")
Команда пакет готовий до використання. Тепер викличте пакет у будь-якому з ваших файлів, як показано нижче в test.py:
Тут mypackage.module1 імпортується та отримує псевдонім як режим1Аналогічно, ви можете використовувати інші модулі module2.py та module3.py з mypackage.
import mypackage.module1 as mod1 print(mod1.mod1_func1()) print(mod1.mod1_func2()) print(mod1.mod1_func2())
вихід:
Welcome to Module1 function1 None Welcome to Module1 function2 None Welcome to Module1 function2 None
Ми щойно продемонстрували пакет за допомогою простого модуля з функціями всередині нього. Відповідно до вашого проекту, ви також можете створювати пакети з підпакетами, тобто підпапками, що містять модулі з визначеними класами.
Python Шлях пошуку модуля
Під час виконання, коли Python трапляється назва модуля імпорту, інтерпретатор намагається знайти модуль. Він шукає модуль у вбудованому списку модулів, а потім у всіх каталогах, визначених у sys.path.
Підводячи підсумок, інтерпретатор виконує наступний пошук, щоб знайти модуль:
- У вашому поточному каталозі.
- У списку вбудованих модулів.
- Усередині каталогів sys.path.
Ви можете отримати детальну інформацію про sys.path, імпортувавши модуль sys та вивівши sys.path. Це надасть вам список каталогів, як показано нижче:
importsys
print(sys.path)
вихід:
['Python Latest\\task2', 'Users\\AppData\\Local\\Programs\\Python\ \Python37\\python37.zip', 'Users\\AppData\\Local\\Programs\\Python\\P ython37\\DLLs']
Ви також можете змінити шлях і зберегти каталоги відповідно до ваших вимог.
Використання псевдоніма модуля в імпорті
Ви також можете скоротити назву модуля, надавши їй псевдонім. Псевдонім можна створити за допомогою as keyword.
Синтаксис:
import filename as alias name
Структура папок для перевірки коду буде такою:
Mod test/ test.py display.py
Нижче наведено код у test.py
my_name = "Guru99" my_address = "Mumbai" def display_message(): return "Welcome to Guru99 Tutorials!" def display_message1(): return "All about Python!"
Тепер ми будемо використовувати псевдонім для test.py у display.py
Import test as t print(t.display_message()) print(t.display_message1()) print(t.my_name) print(t.my_address)
Псевдонім, який використовується для модуля test, — t. Отже, до функцій та змінних з test.py можна звертатися за допомогою псевдоніма t.
вихід:
Welcome to Guru99 Tutorials! All about Python! Guru99 Mumbai
Абсолютний і відносний імпорт в Python
Тепер ви знаєте, як імпортувати файл як модуль в інший файл. Давайте тепер подивимося, як керувати файлами, доступними в папках. Файли в папках можна імпортувати за допомогою абсолютного або відносного імпорту.
Вважайте, що у вас є структура папок проекту, як показано нижче:
Коренева папка — myproject/. Вона має дві підпапки: package1 та package2.
Папка package1 містить два модулі: module1.py та module2.py.
Папка package2 містить один клас myclass.py, підпакет subpkg із module3.py та останній module4.py.
- У module1.py є функція під назвою myfunc1.
- У module2.py є функція під назвою myfunc2.
- У module3.py є функція під назвою myfunc3.
- У module4.py є функція під назвою myfunc4.
Використання абсолютного імпорту
Для абсолютного імпорту вам потрібно додати повний шлях до вашого модуля безпосередньо з кореневої папки проєкту.
Давайте тепер розглянемо, як використовувати абсолютний імпорт для звернення до функцій, присутніх у кожному з модулів.
Щоб працювати з функцією myfunc1, вам потрібно буде імпортувати її наступним чином:
from package1.module1 import myfunc1 or from package1 import module1 module1.myfunc1()
Щоб працювати з функцією myfunc3, вам потрібно буде імпортувати її наступним чином:
from package1.subpkg.module3 import myfunc3 or from package1.subpkg import module3 module3.myfunc3()
Переваги та недоліки використання абсолютного імпорту
Ось переваги використання абсолютного імпорту:
- Стає легко tracповерніть модулі назад для перевірки коду.
- Простий у використанні та дуже простий.
- Якщо проєкт переміщено до іншого шляху, імпорт залишиться незмінним.
Недоліки використання абсолютного імпорту
Ось недоліки використання абсолютного імпорту:
- Шлях імпорту може стати дуже довгим, якщо модулі вкладені, а назви модулів довгі.
Використання відносного імпорту
Розглядаючи ту саму структуру папок, згадану вище, ми побачимо, як імпортувати її за допомогою відносного імпорту.
При відносному імпорті модуль, що імпортується, знаходиться відносно поточного розташування, тобто розташування, де знаходиться оператор імпорту.
синтаксис
У відносному імпорті вам потрібно додати крапку (.) перед назвою модуля під час імпорту за допомогою від.
Перед назвою модуля стоятимуть дві крапки (..), якщо модуль знаходиться на один рівень вище від поточного розташування.
Звертаючись до вищезгаданого рисунка структури папок, ми маємо наступні модулі з їхніми функціями, на які нам потрібно звернутися.
- У module1.py є функція під назвою myfunc1.
- У module2.py є функція під назвою myfunc2.
- У module3.py є функція під назвою myfunc3.
- У module4.py є функція під назвою myfunc4.
Щоб працювати з функцією myfunc1, вам потрібно буде імпортувати її наступним чином:
from .module1 import myfunc1
Щоб працювати з функцією myfunc3, вам потрібно буде імпортувати її наступним чином:
from .subpkg.module3 import myfunc3
Переваги відносного імпорту
- З відносним імпортом працювати легко.
- З поточного розташування імпорт можна скоротити порівняно з абсолютним імпортом.
Недоліки відносного імпорту
- Використовуючи відносний імпорт, важко tracназад, де знаходиться код.



