Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Модули поглубже Основы Python

В предыдущем уроке мы рассмотрели два вида импорта в языке Python: можно импортировать модуль целиком или отдельные его определения. Здесь мы продолжим знакомиться с модулями, но для начала обсудим терминологию. Во время импорта всего модуля можно обращаться к нему «через точку». Вспомним, как выглядит такая запись: module.name.

Для такой формы записи существует и более официальный термин — квалифицированное имя. Соответственно, импорт модуля целиком из прошлого урока официально называется квалифицированным импортом.

Стоит отметить, что в Python все строчки с import принято располагать в самом начале кода модуля. Такой набор строчек часто называют «блоком импортов», хотя синтаксически этот блок никак не выделен — это обычные строчки одна за другой. Эта группировка повышает читабельность кода: так разработчикам проще искать ошибки в коде и отлаживать их.

Импорт всего содержимого модуля

Рассмотрим третий вариант — импорт всего содержимого модуля. Так он выглядит в коде:

from some_module import *
from another_module import *

Здесь из модулей some_module и another_module неявно импортируются все определения. Импорт таким способом дает доступ к десяткам переменных, констант и функций, причем можно не указывать название всего модуля. Эта особенность отличает импорт содержимого от импорта модуля целиком — и она же может вызывать проблемы с читабельностью.

Посмотрим на примере. Представим программиста, который читает чужой код с импортом содержимого. В какой-то момент он встречает название незнакомой переменной и хочет узнать, откуда она взялась. Не получится просто внимательно посмотреть на блок импортов или сделать поиск по коду — названия всех импортированных определений скрываются за *.

Именно поэтому в большинстве руководств по написанию кода на Python повторяется один и тот же совет: «Как можно реже пользуйтесь импортом всего содержимого». Тем не менее в реальном коде такие импорты встречаются, поэтому было важно упомянуть этот вариант.

Сочетание способов импорта

В предыдущем уроке говорилось об импорте модуля целиком и через отдельные определения. Чтобы углубить знания, рассмотрим еще один способ — сочетание импорта целиком и отдельными определениями в рамках одного и того же модуля.

Рассмотрим пример. В модуле computation.py определим функцию и переменные:

# file: computation.py
PI = 3.1415926
E = 2.7182818


def pi_times(x):
    return x * PI

А в модуле main.py воспользуемся двумя способами импорта из модуля computation.py:

# file: main.py
import computation
from computation import PI, E
from computation import pi_times


print(PI)
print(computation.E)
print(pi_times(2))
print(computation.pi_times(E))

Из примеров выше видно, что можно:

  • Использовать оба способа импорта одновременно
  • Импортировать отдельные определения в несколько заходов
  • Получать доступ «через точку» к определениям, которые уже импортированы по имени

Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты.

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы

С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.

Иконка программы Python-разработчик
Профессия
с нуля
Разработка веб-приложений на Django
2 февраля 10 месяцев
Иконка программы Аналитик данных
Профессия
В разработке с нуля
Сбор, анализ и интерпретация данных
16 марта 8 месяцев

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»