Імпортувати модуль в Python з прикладами
Що таке модулі Python?
Модуль — це файл із кодом Python. Код може бути у формі змінних, функцій або визначеного класу. Назва файлу стає назвою модуля.
Наприклад, якщо ім’я вашого файлу guru99.py, ім’я модуля буде гуру99. Завдяки функціям модуля ви можете розбити свій код на різні файли замість того, щоб записувати все в один файл.
Що таке Python модуль імпорту?
У Python файл розглядається як модуль. Щоб використовувати модуль, його потрібно імпортувати за допомогою імпорту ключове слово. Функцію або змінні, присутні всередині файлу, можна використовувати в іншому файлі шляхом імпорту модуля. Ця функція доступна іншими мовами, як-от машинопис, 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 імпортуйте файл moduletest.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 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 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)
Тест імені модуля використовується для посилання на функцію та змінні всередині тесту модуля.
вихід:
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 створює каталог як пакет. Ось макет пакета, над яким ми збираємося працювати.
Назва пакета мій пакет. Щоб розпочати роботу з пакетом, створіть каталог під назвою package/. Усередині каталогу створіть порожній файл під назвою __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 імпортується та отримує псевдонім як mod1. Так само ви можете використовувати інші модулі module2.py і module3.py з мого пакету.
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 назва модуля імпорту, інтерпретатор намагається знайти модуль. Він шукає модуль у списку вбудованих модулів. Later загалом, каталоги, визначені в 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']
Ви також можете змінити шлях і зберегти каталоги відповідно до ваших вимог.
Використання псевдоніма модуля в імпорті
Ви також можете перетворити назву модуля на коротшу форму, надавши йому псевдонім. Псевдонім можна створити за допомогою ключового слова.
Синтаксис:
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)
Псевдонім, який використовується для тестового модуля, це t. Тому на функцію та змінні з test.py можна посилатися за допомогою псевдоніма t.
вихід:
Welcome to Guru99 Tutorials! All about Python! Guru99 Mumbai
Абсолютний і відносний імпорт в Python
Тепер ви знаєте, як імпортувати файл як модуль в інший файл. Давайте тепер подивимося, як керувати файлами, доступними в папках. Файли в папках можна імпортувати за допомогою абсолютного або відносного імпорту.
Вважайте, що у вас є структура папок проекту, як показано нижче:
Коренева папка - мій проект/. Він має дві вкладені папки 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()
Переваги та недоліки використання абсолютного імпорту
Ось переваги використання абсолютного імпорту:
- Стає легко відстежити модулі для перевірки коду.
- Простий у використанні та дуже простий.
- Якщо проект буде переміщено на інший шлях, імпортування залишиться незмінним.
Недоліки використання абсолютного імпорту
Ось недоліки використання абсолютного імпорту:
Недоліки:
- Шлях імпорту може бути дуже довгим у випадку, якщо модулі є вкладеними, і якщо назва модулів є довгою.
Використання відносного імпорту
Враховуючи структуру папок, згадану нижче, ми побачимо, як імпортувати її за допомогою відносного імпорту.
У відносному імпорті модуль, який потрібно імпортувати, є відносно поточного розташування, тобто місця, де присутній оператор імпорту.
синтаксис
У відносному імпорті вам потрібно додати крапку (.) перед назвою модуля під час імпорту за допомогою від.
Перед назвою модуля буде 2 крапки (..), якщо модуль знаходиться на один рівень вище від поточного розташування.
Звертаючись до згаданого вище малюнка структури папок, ми маємо наступні модулі з їх функціями, на які нам потрібно звернутися.
- У module1.py є функція myfunc1.
- У module2.py є функція myfunc2.
- У module3.py є функція myfunc3.
- У module4.py є функція myfunc4.
Для роботи з функцією myfunc1 вам потрібно імпортувати наступним чином:
from .module1 import myfunc1
Для роботи з функцією myfunc3 вам потрібно імпортувати наступним чином:
from .subpkg.module3 import myfunc3
Переваги відносного імпорту
переваги:
- З відносним імпортом працювати легко.
- З поточного розташування імпорт можна скоротити порівняно з абсолютним імпортом.
Недоліки відносного імпорту
Недоліки:
- Використовуючи відносний імпорт, важко відстежити, де знаходиться код
Підсумки
- Імпорт в Python допомагає вам звернутися до коду, тобто .функцій/об’єктів, які записані в іншому файлі. Він також використовується для імпорту бібліотек/пакетів python, які інстальовано за допомогою pip (менеджер пакетів python), і вам потрібно використовувати їх у своєму коді.
- Функція імпорту доступна іншими мовами, наприклад машинописом, JavaСкрипт, java, ruby тощо.
- Модуль — це код python, написаний у файлі, наприклад (test.py). У вашому файлі ви можете визначити свої змінні, функції або клас. Весь файл стає модулем і може бути імпортований в інший файл для посилання на код.
- Завдяки функціям модуля ви можете розбивати свій код на різні файли замість того, щоб записувати все в один файл. Later, використовуючи імпорт, ви можете звернутися до коду всередині потрібного файлу.
- Python має свої вбудовані модулі, а також зовнішні бібліотеки/пакети, встановлені за допомогою a менеджер пакунків python (pip), наприклад, pandas, NumPy тощо називаються модулями.
- Ви можете імпортувати лише невелику частину модуля, тобто лише необхідні функції та імена змінних із модуля замість імпорту повного коду.
- Ви також можете перетворити назву модуля на коротшу форму, надавши йому псевдонім. Псевдонім можна створити за допомогою ключового слова.
- Пакет — це каталог із усіма модулями, визначеними в ньому. Щоб зробити a Python інтерпретатор розглядає його як пакет, ваш каталог повинен мати файл __init.py. Init.py створює каталог як пакет. Ось макет пакета, над яким ми збираємося працювати.
- Під час виконання, коли стикається python назва модуля імпорту, інтерпретатор намагається знайти модуль. Він шукає модуль у списку вбудованих модулів. Later загалом, каталоги, визначені в sys.path.
- Для Абсолютного імпорту вам потрібно додати весь шлях вашого модуля прямо з кореневої папки проекту.
- У відносному імпорті модуль, який потрібно імпортувати, є відносно поточного розташування, тобто місця, де присутній оператор імпорту.