Импортирайте модул в Python с примери

Съдържание:

Anonim

Какви са модулите в Python?

Модулът е файл с python код. Кодът може да бъде под формата на дефинирани променливи, функции или клас. Името на файла става името на модула.

Например, ако името на файла ви е guru99.py, името на модула ще бъде guru99 . С функционалността на модула можете да разбиете кода си в различни файлове, вместо да записвате всичко в един файл.

В този урок ще научите:

  • Какви са модулите в Python?
  • Модул за импортиране на Python
  • Как да създам и импортирам модул в Python?
  • Импортиране на клас в Python
  • Използване от модула за импортиране
  • Импортиране на всичко от модула
  • Използване на модула за импортиране
  • Използване на импортиране *
  • Функцията dir ()
  • Пакети
  • PythonModuleSearchPath
  • Използване на псевдоним на модул при импортиране
  • Абсолютен и относителен импорт в Python
  • Използване на AbsoluteImports
  • Използване на RelativeImports

Какво представлява модулът за импортиране на Python?

Файлът се счита за модул в python. За да използвате модула, трябва да го импортирате с помощта на ключовата дума import . Присъстващата във файла функция или променливи могат да бъдат използвани в друг файл чрез импортиране на модула. Тази функционалност се предлага на други езици, като машинопис, JavaScript, java, ruby ​​и др.

Как да създам и импортирам модул в Python?

Сега ще създадем модул и ще го импортираме в друг файл.

Ето потока за създаване и импортиране на модула, както е показано на екранната снимка:

Следвайте стъпките, дадени за създаване на модул в python.

Структурата на папката, използвана за тестване на кода, е както следва:

modtest/test.pydisplay.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 testprint(test.display_message())

Стъпка 6)

Когато изпълните display.py, ще получите следния изход:

Welcome to Guru99 Tutorials!

Импортиране на клас в Python

По-рано виждахме прост модул с функция. Тук ще създадете клас и ще препратите класа в друг файл.

Структурата на папката за тестване на кода е както следва:

myproj/Car.pydisplay.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_nameself.model = modelself.manu_year = manu_yeardef 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 Carcar_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())

Изход:

BMWCar brand is BMWCar model is Z5Car manufacture year is 2020Car brand is BMWCar model is Z5

Така че можем да получим достъп до всички променливи и функции от Car.py, използвайки модул Car.

Използване от модула за импортиране

Можете да импортирате само малка част от модула, т.е. само необходимите функции и имена на променливи от модула, вместо да импортирате пълен код.

Когато искате да се импортират само конкретни неща, можете да използвате ключовата дума „от“, за да импортирате това, което искате.

Синтаксисът е

from module import your function_name , variables,… etc.

Структурата на папката, използвана за тестване на кода, е както следва:

modtest/test.pydisplay.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_messageprint(display_message())

Изход:

Welcome to Guru99 Tutorials!

Сега, ако случайно използвате функцията display_message1 (), тя ще изведе грешка, че функцията не е дефинирана, както е показано по-долу:

from test import display_messageprint(display_message1())

Изход:

Traceback (most recent call last):File "display.py", line 3, in print(display_message1())Name Error: name 'display_message1' is not defined

Импортиране на всичко от модула

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

Синтаксис:

Import module

Или чрез използване

from module import *

Структурата на папката, използвана за тестване на кода, е както следва:

modtest/test.pydisplay.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 testprint(test.display_message())print(test.display_message1())print(test.my_name)print(test.my_address)

Тестът за име на модул се използва за препращане към функцията и променливите вътре в теста на модула.

Изход:

Welcome to Guru99 Tutorials!All about Python!Guru99Mumbai

Използване на импортиране *

Нека да видим пример с помощта на import * . Използвайки import * , функциите и променливите са директно достъпни, както е показано в примера по-долу:

from test import *print(display_message())print(display_message1())print(my_name)print(my_address)

Изход:

Welcome to Guru99 Tutorials!All about Python!Guru99Mumbai

Функцията dir ()

Dir () е вградена функция в python. Dir () връща всички свойства и методи, включително вградените свойства на дадения обект.

Така че, когато dir () се използва в модула, той ще ви даде променливите, функциите, които присъстват в модула.

Ето един работен пример за dir () на модул. Имаме клас, наречен Car.py, нека импортираме Car и присвоим на dir (), за да видим резултата.

Структурата на папката за тестване на кода ще бъде както следва:

test prop/Car.pytest.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_nameself.model = modelself.manu_year = manu_yeardef 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 Carclass_contents = dir(Car)print(class_contents)

Изходът ни дава името на класа и всички функции, дефинирани в Car.py.

Можете също да опитате да използвате dir () на вграден модул, наличен в Python. Нека опитаме същото на json модула, както е показано в примера по-долу. Той ще покаже всички свойства и методи, налични в json модула.

Import jsonjson_details = dir(json)print(json_details)

Изход:

['JSONDecodeError', 'JSONDecoder', 'JSONEncoder', '__all__', '__author__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', '__version__', '_default_decoder', '_default_encoder', 'codecs', 'decoder', 'detect_encoding', 'dump', 'dumps', 'encoder', 'load', 'loads', 'scanner']

Пакети

Пакетът е директория с всички модули, дефинирани вътре в нея. За да накарате интерпретатора на Python да го третира като пакет, вашата директория трябва да има init.pyfile. Init.py прави директорията като пакет. Ето оформлението на пакета, по което ще работим.

Името на пакета е моят пакет . За да започнете да работите с пакета, създайте директория, наречена пакет /. Вътре в директорията създайте празен файл, наречен __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 mod1print(mod1.mod1_func1())print(mod1.mod1_func2())print(mod1.mod1_func2())

Изход:

Welcome to Module1 function1NoneWelcome to Module1 function2NoneWelcome to Module1 function2None

Току-що демонстрирахме пакета с прост модул с функции вътре в него. Според вашия проект, можете също да пакетирате с подпакети. Подпапки / с модули с дефинирани класове.

Път за търсене на модула на Python

По време на изпълнение, когато python попадне на името на модула за импортиране , интерпретаторът се опитва да намери модула. Той търси модула в списъка с вградени модули. По-късно, директориите, дефинирани в sys.path.

В обобщение, интерпретаторът прави следното търсене за намиране на модула:

  1. В текущата ви директория.
  2. В в списъка с вградени модули
  3. Вътре в директориите sys.path

Можете да получите подробности за sys.path, като импортирате sys модул и отпечатате sys.path. Ще ви даде списъка с директории, както е показано по-долу:

importsysprint(sys.path)

Изход:

['Python Latest\\task2', 'Users\\AppData\\Local\\Programs\\Python\\Python37\\python37.zip', 'Users\\AppData\\Local\\Programs\\Python\\Python37\\DLLs']

Можете също така да промените пътя и да запазите директориите според вашите изисквания.

Използване на псевдоним на модул при импортиране

Можете също да конвертирате името на модула в по-кратка форма, като му дадете псевдоним. Псевдонимът може да се направи с помощта на ключовата дума.

Синтаксис:

import filename as alias name

Структурата на папката за тестване на кода ще бъде както следва:

Mod test/test.pydisplay.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 tprint(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!Guru99Mumbai

Абсолютен и относителен импорт в 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 myfunc1orfrom package1 import module1module1.myfunc1()

За да работите с функцията myfunc3, ще трябва да импортирате, както следва:

from package1.subpkg.module3 import myfunc3orfrom package1.subpkg import module3module3.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 ви помага да се обърнете към кода, т.е. .functions / обекти, които са записани в друг файл. Също така се използва за импортиране на библиотеки / пакети на python, които са инсталирани с помощта на pip (мениджър на пакети на python) и след това трябва да използвате във вашия код.
  • Функцията за импортиране е налична на други езици като typecript, JavaScript, java, ruby ​​и др.
  • Модулът е python е кодът, написан във файла, например (test.py). Във вашия файл можете да дефинирате променливите, функциите или класа си. Целият файл става модул и може да бъде импортиран в друг файл, за да се позове на кода.
  • С функционалността на модула можете да разбиете кода си в различни файлове, вместо да записвате всичко в един файл. По-късно, използвайки импортиране, можете да се обърнете към кода във файла, от който се нуждаете.
  • Python има вградени модули, а също така външни библиотеки / пакети, инсталирани с помощта на мениджър на пакети на python (pip), напр. Pandas, NumPy и т.н. се наричат ​​модули.
  • Можете да импортирате само малка част от модула, т.е. само необходимите функции и имена на променливи от модула, вместо да импортирате пълен код.
  • Можете също да конвертирате името на модула в по-кратка форма, като му дадете псевдоним. Псевдонимът може да се направи с помощта на ключовата дума.
  • Пакетът е директория с всички модули, дефинирани вътре в нея. За да накарате интерпретатора на Python да го третира като пакет, вашата директория трябва да има __init.pyfile. Init.py прави директорията като пакет. Ето оформлението на пакета, по което ще работим.
  • По време на изпълнение, когато python попадне на името на модула за импортиране , интерпретаторът се опитва да намери модула. Той търси модула в списъка с вградени модули. По-късно, директориите, дефинирани в sys.path.
  • За абсолютен импорт трябва да добавите целия път на вашия модул направо от основната папка на проекта.
  • При относително импортиране модулът, който трябва да се импортира, е спрямо текущото местоположение, което е местоположението, където присъства операторът за импортиране.