Part 7

Модули

Отладка: еще раз

Мы уже познакомились с несколькими методами отладки в этом курсе. Инструмент визуализации теперь должен быть вам знаком, а отладочные выводы уже давно стали надежным привычным приемом. Возможно, вы также пробовали встроенный отладчик Visual Studio Code. Если у вас возникали проблемы с тем, что отладчик не находил ваши файлы, в предыдущей части были советы для таких ситуаций.

В Python версии 3.7 появился еще один простой и полезный инструмент для отладки программ: команда breakpoint().

Эту команду можно добавить в любую точку вашего кода (конечно, соблюдая обычные синтаксические правила). Когда программа запускается, выполнение останавливается в месте, где вы вставили команду breakpoint. Вот пример отладки при выполнении одного из упражнений из предыдущей части (пожалуйста, не обращайте внимания на финские имена переменных на изображениях и сосредоточьтесь на функциональности):

7 1 1

Когда выполнение останавливается на команде breakpoint, открывается интерактивное окно консоли. Здесь можно писать любой код так же, как в обычной консоли Python, и смотреть, как он работает именно в этой точке программы.

Команда breakpoint особенно полезна, когда вы знаете, что какая-то строка кода вызывает ошибку, но не совсем понимаете почему. Добавьте точку останова прямо перед проблемной строкой и запустите программу. Теперь можно пробовать разные варианты в интерактивной консоли и выяснить, какие команды нужно включить в программу.

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

7 1 2

В консоли отладки доступны и другие команды. Их можно найти здесь, либо можно ввести help в консоли отладки:

7 1 3

Команда exit завершает выполнение программы.

Когда вы закончите отладку, не забудьте удалить команды breakpoint из своего кода!

Использование модулей

Само определение языка Python уже содержит некоторые полезные функции, например функцию len, которая возвращает длину строки или списка, или функцию sum, которая возвращает сумму элементов в структуре данных, но одних только этих средств программисту хватит не всегда. Стандартная библиотека Python — это набор стандартизированных функций и объектов, которые можно использовать, чтобы разными способами расширить выразительные возможности Python. В предыдущих упражнениях мы уже использовали некоторые функции, определенные в стандартной библиотеке, например при вычислении квадратных корней.

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

Команда import делает содержимое указанного модуля доступным в текущей программе. Рассмотрим подробнее работу с модулем math. Он содержит определения некоторых математических функций, таких как sqrt для квадратного корня и log для логарифма.

import math

# The square root of the number 5
print(math.sqrt(5))
# the base 2 logarithm of the number 8
print(math.log(8, 2))
Пример вывода

2.23606797749979 3.0

Функции определены в модуле math, поэтому в программном коде к ним нужно обращаться как к math.sqrt и math.log.

Выбор отдельных частей модуля

Еще один способ использовать модули — выбрать отдельную сущность из модуля с помощью команды from. Если нам нужны только функции sqrt и log из модуля math, можно сделать так:

from math import sqrt, log

print(sqrt(5))
print(log(5,2))

Как видно выше, при таком способе импорта нам не нужен префикс math при использовании функций.

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

from math import *

print(sqrt(5))
print(log(5,2))

Импорт модулей с помощью звездочки может быть полезен при тестировании и в некоторых небольших проектах, но он также может создать новые проблемы. Мы еще встретимся с ними позже.

Loading

Содержимое модуля

Документация Python содержит обширные материалы по каждому модулю стандартной библиотеки Python. В документации есть информация о функциях и методах, определенных в модуле, а также о том, как модуль можно использовать. Например, вот ссылка на документацию модуля math:

Мы также можем посмотреть содержимое модуля с помощью функции dir:

import math

print(dir(math))

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

Пример вывода

['__doc__', '__name__', '__package__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'hypot', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc']

Loading
Loading
Вы дошли до конца этого раздела! Перейти к следующему разделу:

Текущие баллы можно посмотреть в синем индикаторе в правом нижнем углу страницы.