Импортиране на модул в 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“, за да импортирате това, което искате.
Така че синтаксисът е
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 ключова дума.
Синтаксис:
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обратно там, където се намира кодът.



