"Информатика. Учебное пособие для учреждений общего среднего образования с русским языком обучения", В. М. Котов, А. И. Лапо и Ю.А. Быкадоров, Е.Н. Войтехович
Модуль — готовый файл или библиотека с программными объектами: например, функциями и константами. Импорт подключает модуль или выбранные объекты к программе, чтобы пользоваться готовыми средствами, а не создавать их заново. Если импортирован весь модуль, к его объекту обращаются через имя модуля и точку; отдельно импортированный объект вызывают по собственному имени. Псевдоним помогает сократить запись, а правильный выбор способа импорта делает имена в программе понятными и помогает избегать совпадений.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Модуль — файл или библиотека с готовыми программными объектами, которые можно использовать в программе. В нём могут храниться функции, константы и другие средства языка. Модуль нужен, чтобы не создавать заново то, что уже подготовлено для решения типичных задач.
Объект — доступный программе элемент модуля, например функция или константа. Функция выполняет действие, а константа хранит значение, которое обычно не меняется. Понимание того, какой именно объект нужен, помогает выбрать его из модуля и правильно вызвать.
Импорт — подключение модуля или отдельных объектов, чтобы обращаться к ним в программе. Для этого в коде записывают команду импорта с нужными именами. Импорт нужен, чтобы программа получила доступ к готовым средствам.
Пространство имён — набор имён, по которым программа находит подключенные объекты. Можно представить его как область, в которой имена связываются с конкретными функциями и значениями. Это помогает понять, почему иногда перед именем функции нужно указывать модуль, а иногда — нет.
Готовые модули позволяют использовать уже созданные и проверенные средства, не записывая их заново. Например, математические вычисления часто требуют стандартных функций, и их можно взять из модуля math. Это экономит время и снижает вероятность ошибки в коде функции. При этом программа использует готовый объект, а не копию его описания, написанную учеником.
Если импортировать целый модуль командой import math, программа подключит его имя math. Поэтому функция внутри модуля вызывается с указанием пути к ней: math.sqrt(25). Точка отделяет имя модуля от имени объекта, и по такой записи программе проще определить, где искать sqrt. Результатом вызова будет квадратный корень из 25, то есть 5.0.
Можно импортировать только выбранные объекты, например командой from math import pi, sin. Тогда имена pi и sin становятся доступными непосредственно, и синус числа pi / 2 записывают как sin(pi / 2). Такой способ удобен, если нужны лишь несколько элементов модуля и хочется сократить запись. Но имя объекта должно быть указано точно, потому что программа ищет его среди импортированных имён.
После слова as можно задать псевдоним — другое, обычно более короткое имя модуля или объекта. Например, команда import random as rnd позволяет вызвать функцию как rnd.randint(1, 10). Псевдоним сокращает длинные имена и делает многократные обращения удобнее. После импорта в программе следует пользоваться назначенным именем, а не исходным.
Способ импорта влияет на то, как записывают имена объектов и как предотвращают их совпадения. При импорте целого модуля имя модуля уточняет, откуда взята функция, поэтому одинаковые имена объектов из разных модулей легче различить. При отдельном импорте имя объекта короче, но оно может совпасть с именем другой функции или переменной. Выбирай вариант, который делает обращение понятным и не создаёт путаницы.
Сравни способы импорта в таблице: в строке найди команду, затем проверь, как после неё обращаться к объекту. Если используешь псевдоним, в обращении должно стоять именно короткое имя. Таблица помогает не смешивать правила разных способов.
| Способ | Как записать | Как обратиться к объекту | Особенность |
|---|---|---|---|
| Импорт всего модуля | import math | math.sqrt(25) | Имя модуля указывают перед объектом через точку. |
| Импорт отдельного объекта | from math import sqrt | sqrt(25) | Объект вызывают непосредственно по имени. |
| Импорт с псевдонимом | import random as rnd | rnd.randint(1, 10) | Вместо исходного имени модуля используют псевдоним. |
Условие: подключить модуль math и вычислить квадратный корень из 49. Нужно определить, какой объект выполняет вычисление, и учесть, что импортируется весь модуль. Поэтому в обращении к функции понадобится имя math.
Ответ: import math; math.sqrt(49) → 7.0.
Условие: подключить из math константу pi и функцию sin, затем найти синус числа pi / 2. Здесь нужны два конкретных объекта, поэтому можно импортировать их отдельно. Тогда в выражении не потребуется писать имя модуля.
Ответ: from math import pi, sin; sin(pi / 2) ≈ 1.
Условие: подключить модуль random под псевдонимом rnd и получить случайное целое число от 1 до 10. Поскольку импортируется модуль, функцию нужно будет вызвать через его имя. Но после as это имя заменено псевдонимом rnd.
Ответ: import random as rnd; rnd.randint(1, 10) возвращает случайное целое число от 1 до 10.
После импорта всего модуля иногда пытаются вызвать объект без имени модуля: например, пишут sqrt(25) после import math. Так делают, потому что название функции кажется достаточным, но отдельное имя sqrt этой командой не подключено. Проверь, какой способ импорта записан, и при импорте целого модуля добавь math. перед объектом.
Обратная ошибка — указывать имя модуля перед объектом, импортированным отдельно, например писать math.sqrt(25) после from math import sqrt. Программа не ожидает такого обращения при выбранном способе: имя sqrt уже подключено напрямую. Сверь вызов с командой импорта и используй просто sqrt(25).
Имена модуля и объекта могут перепутать местами или написать неверно, из-за чего программа не находит нужную функцию или константу. Ошибку допускают, когда не различают, где находится объект и как он называется. Проверь написание по команде импорта и убедись, что объект указан именно из нужного модуля.
Если модулю назначили псевдоним, но обращаются к исходному имени, программа может не узнать его в таком обращении. Например, после import random as rnd нужно использовать rnd, а не random. Такая путаница возникает, когда забывают, что as заменяет имя для дальнейшего использования. Сравни вызов с псевдонимом в команде импорта и исправь его, если они не совпадают.
Чтобы читать команды импорта и вызовы объектов, нужно уметь записывать имена переменных, вызывать функции и составлять команды программы. Эти знания помогают понять, какие слова являются именами, а какие — действиями и значениями. Если команда импорта подключила модуль, его функции можно применять для математических вычислений и работы со случайными числами. Тот же подход позволяет использовать и другие готовые средства языка программирования.
Зачем импортировать модуль, если можно написать нужную функцию самому?
В готовом модуле уже есть написанные и проверенные функции и константы. Их использование экономит время и помогает не допустить ошибок при самостоятельном создании похожего средства.
Чем отличается импорт всего модуля от импорта отдельной функции?
При импорте всего модуля перед именем объекта пишут имя модуля и точку, например math.sqrt. Если импортировать функцию отдельно, её вызывают непосредственно по имени: sqrt.
Почему после import math функцию записывают как math.sqrt?
Команда import math подключает модуль math, но не создаёт отдельное имя sqrt. Запись math.sqrt показывает программе, что нужно найти функцию sqrt внутри модуля math.
Для чего модулю задают псевдоним?
Псевдоним — это короткое имя, которое задают после as и используют вместо исходного имени модуля. Так запись становится короче, особенно если имя модуля длинное.
Что произойдёт, если имя объекта при импорте написать с ошибкой?
Программа не найдёт объект с таким именем и сообщит об ошибке при выполнении команды импорта. Проверь написание имени и убедись, что объект действительно есть в указанном модуле.
8.3. Импорт и использование объектов