Работа с модулями языка Python

В этом руководстве вы узнаете о модулях языка Python, о том, как импортировать объекты из модуля и как разрабатывать свои модули.

Содержание

Введение в модули Python

Модуль — это часть программного обеспечения, имеющая определенную функциональность. Модуль Python — это файл, содержащий код Python.

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

Имя модуля определяется именем файла без расширения .py. Например, если у вас есть файл с именем «pricing.py», имя модуля — «pricing».

Создание модулей Python

Сначала создайте новый файл с именем «pricing.py» и добавьте следующий код:

# pricing.py

def get_net_price(price, tax_rate, discount=0):
    return price *(1 + tax_rate) *(1-discount)


def get_tax(price, tax_rate=0):
    return price * tax_rate

Модуль ценообразования имеет две функции, которые рассчитывают чистую цену и налог на основе продажной цены, ставки налога и скидки.

Импорт объектов модуля

Чтобы использовать объекты, определенные в модуле из другого файла, вы можете использовать оператор import.

Оператор импорта имеет несколько форм, которые мы обсудим в следующих разделах.

1) импортировать <module_name>

Чтобы использовать объекты, определенные в модуле, вам необходимо импортировать модуль, используя следующий оператор импорта:

import module_name

Например, чтобы использовать модуль ценообразования в файле main.py, вы используете следующий оператор:

import pricing

Когда вы импортируете модуль, Python выполняет весь код из соответствующего файла. В этом примере Python выполняет код из файла pricing.py. Кроме того, Python добавляет имя модуля к текущему модулю.

Это имя модуля позволяет вам получать доступ к функциям, переменным и т. д. из импортированного модуля в текущем модуле. Например, вы можете вызвать функцию, определенную в импортированном модуле, используя следующий синтаксис:

module_name.function_name()

Ниже показано, как использовать функцию get_net_price(), определенную в модуле pricing в файле main.py:

# main.py
import pricing


net_price = pricing.get_net_price(
    price=100,
    tax_rate=0.01
)

print(net_price)

Выход:

101.0

2) импортируйте <module_name> как новое_имя

Если вы не хотите использовать pricing в качестве идентификатора в файле main.py, вы можете переименовать имя модуля на другое следующим образом:

import pricing as selling_price

И затем вы можете использовать selling_price в качестве идентификатора в файле main.py:

net_price = selling_price.get_net_price(
    price=100,
    tax_rate=0.01
)

3) из <module_name> импортировать <name>

Если вы хотите ссылаться на объекты в модуле без префикса имени модуля, вы можете явно импортировать их, используя следующий синтаксис:

from module_name import fn1, fn2

Теперь вы можете использовать импортированные функции без указания имени модуля следующим образом:

fn1()
fn2()

В этом примере импортируется функция get_net_price() из модуля pricing:

# main.py
from pricing import get_net_price

и используйте функцию get_net_price() из модуля pricing:

# main.py
from pricing import get_net_price

net_price = get_net_price(price=100, tax_rate=0.01)
print(net_price)

4) from <module_name> import <name> as <new_name>: переименовать импортированные объекты

Импортированное имя можно переименовать в другое, используя следующий оператор импорта:

from <module_name> import <name> as <new_name>

В следующем примере функция get_net_price() из модуля pricing переименовывается в функцию Calculate_net_price():

from pricing import get_net_price as calculate_net_price

net_price = calculate_net_price(
    price=100,
    tax_rate=0.1,
    discount=0.05
)

5) from module_name import *: импортировать все объекты из модуля

Чтобы импортировать каждый объект из модуля, вы можете использовать следующий синтаксис:

from module_name import *

Этот оператор импортирует в программу все общедоступные идентификаторы, включая переменные, константы, функции, классы и т. д.

Однако это не очень хорошая практика, поскольку если импортированные модули имеют один и тот же объект, объект из второго модуля переопределит первый. Программа может работать не так, как вы ожидаете.

Давайте посмотрим на следующий пример.

Сначала создайте новый файл с именем product.py и определите функцию get_tax():

# product.py
def get_tax(price):
    return price * 0.1

Модули продуктов и цен имеют функцию get_tax(). Однако функция get_tax() из модуля продуктов имеет только один параметр, а функция get_tax() из модуля ценообразования имеет два параметра.

Во-вторых, импортируйте все объекты из модулей цен и продуктов и используйте функцию get_tax():

from pricing import *
from product import *

tax = get_tax(100)
print(tax)

Поскольку функция get_tax() из модуля продукта переопределяет функцию get_tax() из модуля ценообразования, вы получаете налог со значением 10.

Заключение

  • Модуль — это файл исходного кода Python с расширением .py. Имя модуля — это имя файла Python без расширения.
  • Чтобы использовать объекты из модуля, вы импортируете их с помощью оператора import.
Похожие посты
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *