Імпортувати модуль в Python з прикладами

Що таке модулі Python?

Модуль — це файл із кодом Python. Код може бути у формі змінних, функцій або визначеного класу. Назва файлу стає назвою модуля.

Наприклад, якщо ім’я вашого файлу guru99.py, ім’я модуля буде гуру99. Завдяки функціям модуля ви можете розбити свій код на різні файли замість того, щоб записувати все в один файл.

Що таке Python модуль імпорту?

У Python файл розглядається як модуль. Щоб використовувати модуль, його потрібно імпортувати за допомогою імпорту ключове слово. Функцію або змінні, присутні всередині файлу, можна використовувати в іншому файлі шляхом імпорту модуля. Ця функція доступна іншими мовами, як-от машинопис, JavaСкрипт, java, ruby ​​тощо.

Як створити та імпортувати модуль Python?

Тепер ми створимо модуль та імпортуємо його в інший файл.

Ось процес створення та імпорту модуля, як показано на знімку екрана:

Створення та імпортування модуля в 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 створює каталог як пакет. Ось макет пакета, над яким ми збираємося працювати.

Пакети в Python

Назва пакета мій пакет. Щоб розпочати роботу з пакетом, створіть каталог під назвою 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.

Підводячи підсумок, інтерпретатор виконує наступний пошук, щоб знайти модуль:

  1. У вашому поточному каталозі.
  2. У списку вбудованих модулів
  3. Усередині каталогів 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

Тепер ви знаєте, як імпортувати файл як модуль в інший файл. Давайте тепер подивимося, як керувати файлами, доступними в папках. Файли в папках можна імпортувати за допомогою абсолютного або відносного імпорту.

Вважайте, що у вас є структура папок проекту, як показано нижче:

Абсолютний і відносний імпорт в 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.
  • Для Абсолютного імпорту вам потрібно додати весь шлях вашого модуля прямо з кореневої папки проекту.
  • У відносному імпорті модуль, який потрібно імпортувати, є відносно поточного розташування, тобто місця, де присутній оператор імпорту.