Step 1 (S-15463)
Step on Stepik: https://stepik.org/lesson/3377/step/1
Чем больше размер ваших программ, тем чаще у вас будет возникать желания выделить какие-то фрагменты в отдельные функции. А начиная с некоторого момента, оказывается. удобно выделить некоторые функции в отдельный файл. Для того, чтобы это делать, можно использовать модуль. Фактически модуль представляет собой отдельный файл, который содержит некоторые функции и данные. Функции и объекты из одного модуля можно импортировать (подгружать) в другой модуль. Имя модуля определяется именем файла, в котором он записан. Как правило в Python, имя файла - это имя модуля плюс расширение .py.
Как импортировать модуль в нашу программу? Рассмотрим пример: у нас есть модуль my_module, который записан в файле my_module.py, и в нем определена функция foo.
Для того, чтобы импортировать модуль внутрь нашей программы, нам необходимо записать ключевое слово import и после него указать имя модуля.
После этого мы можем вызывать функции из модуля my_module.py. Для вызова функции из импортируемых модулей используется следующая конструкция - указывается имя модуля и далее через точку имя, вызываемой функции.
Это один из стандартных способов вызова функции из модуля. Существуют и другие способы. Во-первых мы можем явно импортировать только одну функцию из модуля. Для этого используется конструкция:
В ней мы указываем, что из модуля my_module нужно импортировать функцию foo.
В этом случае можем вызвать функцию foo, указывая только имя.
Возможно импортировать из модуля сразу все функции. Для этого в предыдущую конструкцию нужно поставить символ * (звездочка) вместо имени функции foo.
Функции из модуля будут доступны по имени. И наконец, можно импортировать из модуля нужную нам функции и связать ее внутри нашей программы с другим именем.
Теперь функция foo из модуля будет доступна по имени my_foo. Такая конструкция может быть полезной в случае, если в нашей программе уже определена функция foo.
Помимо написания своих модулей, мы можем использовать огромное количество модулей стандартной библиотеки Python. Стандартная библиотека Python предоставляет обширные возможности, поэтому иногда говорят, что Python поставляется с "батарейками в комплекте". Со списком стандартных модулей можно ознакомится по ссылке - https://docs.python.org/3/library/index.html
Список модулей действительно велик, в нем есть модули для работы с операционной системой, различными форматами данных, математических вычислений и т.д. Рассмотреть все модули в данном курсе мы не сможем. Вы можете самостоятельно поискать по ключевым словам в документации к стандартной библиотеке, необходимый вам, функционал.
Мы же рассмотрим пару примеров.
Модуль sys обеспечивает доступ к некоторым переменным и функциям, взаимодействующим с интерпретатором Python. В частности, используя этот модуль, мы можем получать аргументы командной строки. При вызове программы мы можем указывать некоторые параметры в командной строке. Например, при запуске интерпретатора мы можем указать параметр -h, в этом случае интерпретатор не будет запущен, а выведется справочная информация на экран.
Аналогично, мы можем написать свою программу, которая будет принимать какие-то параметры и обрабатывать значения этих параметров. Напишем программу, которая будет выводить число аргументов, с которыми она была запущена.
Список переданных параметров доступен по sys.argv. С помощью функции len мы можем определить количество элементов этого списка. Сохраним нашу программу в файле prog.py
Если мы запустим нашу программу
она выведет значение 1. Это произошло потому, что первый аргумент списка sys.argv - имя файла с программой. Запустим программу еще раз, указав в качестве параметров два числа: 5 и -23.
Программа вывела 3.
Еще один достаточно полезный модуль стандартной библиотеки - subprocess. Он позволяет вызывать внешние процессы. Например, из своей программы мы можем вызвать другую программу. Для этого можно использовать функцию call.
Функция call может принимать большое количество аргументов, но в общем случае она принимает на вход имя программы и список ее параметров.
По умолчанию вывод вызываемой (внешней) программы направляется на стандартный вывод (на консоль), именно поэтому в выводе нашей программы мы увидели справку к интерпретатору python. Таким образом смешивается вывод нашей программы и запущенной внешней программы. Это нужно учитывать при написании программ. Другой способ избежать "мешанины" - перенаправить вывод внешней программы (например: в файл)
Программа завершила работу, вывода на консоль нет. В директории появился файл out_file.txt.
Выведем содержимое файла out_file.txt на консоль и убедимся в том, что в него был записан вывод команды python -h.
Аналогичным образом можно поступать c выводом сообщений об ошибках.