Импортиране на модул в 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  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.pyfile. 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

Предимства на относителния внос

Предимства:

  • Лесно се работи с относителен внос.
  • От текущото местоположение импортиранията могат да бъдат съкратени в сравнение с абсолютните импортирания.

Недостатъци на относителния внос

Недостатъци:

  • Използвайки относителен импорт, е трудно да се проследи обратно къде се намира кодът

Oбобщение

  • Импортиране в Python ви помага да се обърнете към кода, т.е. .функции/обекти, които са записани в друг файл. Използва се и за импортиране на библиотеки/пакети на python, които са инсталирани чрез pip (мениджър на пакети на python), и след това трябва да използвате във вашия код.
  • Функцията за импортиране е налична на други езици като машинопис, JavaСкрипт, java, ruby ​​и др.
  • Модулът е python е кодът, написан във файла, например (test.py). Във вашия файл можете да дефинирате вашите променливи, функции или клас. Целият файл става модул и може да бъде импортиран в друг файл, за да се препрати към кода.
  • С функционалността на модула можете да разделите кода си на различни файлове, вместо да пишете всичко в един файл. Later, използвайки import, можете да се обърнете към кода във файла, от който се нуждаете.
  • Python има своите вградени модули, както и външни библиотеки/пакети, инсталирани с помощта на a мениджър на пакети на python (pip), напр. pandas, NumPy и т.н. се наричат ​​модули.
  • Можете да импортирате само малка част от модула, т.е. само необходимите функции и имена на променливи от модула, вместо да импортирате целия код.
  • Можете също така да преобразувате името на модула в по-кратка форма, като му дадете псевдоним. Псевдонимът може да се направи с помощта на ключовата дума.
  • Пакетът е директория с всички модули, дефинирани в нея. За да направите a Python интерпретаторът го третира като пакет, вашата директория трябва да има __init.pyfile. Init.py прави директорията като пакет. Ето оформлението на пакета, върху който ще работим.
  • По време на изпълнение, когато python се натъкне име на модул за импортиране, интерпретаторът се опитва да намери модула. Той търси модула в списъка с вградени модули. Later общо взето директориите, дефинирани в sys.path.
  • За Абсолютно импортиране трябва да добавите целия път на вашия модул направо от основната папка на проекта.
  • При относителното импортиране модулът, който трябва да се импортира, е относително към текущото местоположение, което е местоположението, където присъства операторът за импортиране.