Работа с модулями языка Python
В этом руководстве вы узнаете о модулях языка Python, о том, как импортировать объекты из модуля и как разрабатывать свои модули.
- Введение в модули Python
- Создание модулей Python
- Импорт объектов модуля
- 1) импортировать <module_name>
- 2) импортируйте <module_name> как новое_имя
- 3) из <module_name> импортировать <name>
- 4) from <module_name> import <name> as <new_name>: переименовать импортированные объекты
- 5) from module_name import *: импортировать все объекты из модуля
- Заключение
Введение в модули 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.