Connect with us

Обучение

Python #7: Модули, пакеты

Поговорим о важной части программирования на питоне — о модулях

Модуль — это отдельный файл (расширение .py) с конкретным кодом (классы, функции, данные и т.д.), который мы можем вызвать в любом другом месте.

Т.е. мы можем импортировать кучу файлов перед кодом, чтобы не писать их код заново. Делается это, чтобы разделить огромный проект на мелкие и не загромождать кодом каждый файл в программе. Можно использовать как библиотеки, встроенные в питон (math — для математических функций, random — чтобы генерировать случайное число), так и собственноручно написанные. Для вставки модуля используется команда import.

import random 

Если модуль лежит в какой-либо директории, указываем путь через точку

folder.mymodule

Можно использовать только конкретные функции отдельного модуля. Записывается так:

from math import sin,cos

Либо импортировать все функции (и всё содержимое) — этот способ не рекомендуется

from math import* 

Основные функции random

Библиотека random достаточно часто используется во всевозможных задачах, поэтому его основные функции лучше знать и помнить

randint — целое случайное число от x до n

choise — выбирает случайный элемент последовательности

shuffle — перемешивает последовательность

sample — список длиной x из последовательности

Рассмотрим на примере:

 

Результат:

Импорт модулей

Импорт своих созданных модулей ничем не отличается от встроенных. Как мы помним в разных модулях могут содержаться переменные и функции под одними и теми же названиями. Как это работает?

В корневом каталоге у нас есть файл main.py. В него и будем импортировать. Создаем каталог Viski, там создаем файл Spiced. В корневом каталоге создадим так же файл бухлишко

Сделаем так, чтобы в файлах Spiced и Buhlishko были одинаковые переменные (viski) и одинаковые функции (sales). Вот так:

Теперь будем импортировать модули в main из обоих файлов:

Результат:

Импорт модулей со скриптами

Если мы будем импортировать модуль с каким-то готовым скриптом, то его код будет выполняться. До этого мы импортировали модули, которые просто содержали какие-то данные. Что будет, если в импортируемом модуле уже есть какой-то код?

Создадим отдельный файл checkout, куда запишем код вывода в консоль каких-нибудь фраз

Если мы его импортируем, то получим выполнение кода в самом начале работы программы:

Даже если вы используете инструкцию from (для импорта, например, только переменной) — код print будет выполняться всё равно.

Как сделать, так, чтобы он не выполнялся?

Ограничение выполнения скриптов делается через конструкцию

if __name__== ‘__main__’:

Её достаточно вписать в наш файл chekout. Код будет выполняться только в самом модуле (внутри самого chekout), но не будет выполняться там, куда мы его импортировали (main)

Код:

Результат:

Но теперь, благодаря нашей конструкции код в файле main выполняться не будет, даже если мы импортируем checkout

Пакеты

Пакеты — это директории с файлом или несколькими файлами программы (с расширением .py). Он так же может содержать внутри другие пакеты (дерево) и обязательно содержим файл __init__.py (он пустой). Уровни вложенности пакетов разделяются точкой:

package1.package2.module

Команда, которая импортирует модуль из того же пакета, что и он сам:

import .module (через точку)

Можно так же импортировать какие-то классы, объекты и т.д. через команду from.

Рассмотрим наш алкомаркет с несколькими пакетами. Основой программы будет файл main. Он будет располагаться в корневом каталоге. Создадим пакет «Пиво», в ней создадим еще один пакет «Белое» и в него уже добавим два модуля (два файла .py) — hoegaarden.py и paulaner.py. В папке Beer создадим еще один пакет — назовем его russian. В него добавим модуль baltika. Общая структура будет выглядеть так:

В пределах одного пакета записываем импорт через точку:

Если в каталоге beer мы создадим модуль магнат, тот вызов модуля из пакета white будет произведен через точку:

А в файле main, который у нас вообще в корне, запишем импорт модуля main. И запустим программу:

Результат:

Модули os и sys

Модуль os предназначен для работы с операционной системой. При этом он работает вне зависимости от того, линукс у вас или винда — разницы для питона нет.  Рассмотрим его основные функции и переменные

os.name — в переменной хранится название ОС

os.chdir — смена текущей директории

os.getcwd() — возвращает текущую рабочую директорию

os.mkdir() — создание папки (директории, каталога)

os.path — модуль для работы с путями

Рассмотрим это в pycharm’е

 

Результат:

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

 executable — путь к интерпритатору питона

exit()- выход из питона

platform — информация об операционной системе

path — список путей поиска модулей

argv- список аргументов командной строки

Проверим, как работают отдельные переменные и функции

 

Результат:

sys.path

Переменная sys.path имеет тип данных list (список), а значит мы можем её изменять. Это нужно для того, чтобы указать интерпритатору где еще можно искать модули для нашей программы

 

Создание каталогов

Давайте попробуем создать пять папок в каталоге с нашим модулем с названием нашей платформы (в нашем случае это win32) и его порядковым номером

 

Результат

Click to comment

Leave a Reply

Ваш e-mail не будет опубликован.

Лучшие сервисы стриминга музыки в 2019 году

Сервисы

Wink Ростелеком: Samsung LG, Sony, Phillips, Android TV

Ростелеком

LG WEB OS: приложения, обновления, настройка, проблемы со звуком

Гаджеты

Ноутбуки Asus не видят жесткий диск. Автоматический вход в BIOS при старте

Гаджеты

.

Digital2.ru - тренды, IT, разработка, цифровая экономика

Connect
Подпишись на нас