Структура програми Python#

Програми на мові Python можна розкласти на такі складові, як модулі, інструкції, вирази і об’єкти. При цьому:

  1. Програми діляться на модулі.

  2. Модулі містять інструкції.

  3. Інструкції складаються з виразів.

  4. Вирази створюють і обробляють об’єкти.

Синтаксис мови Python побудований на інструкціях і виразах. Вирази обробляють об’єкти і вбудовуються в інструкції. Інструкції є більші логічні блоки програми - вони безпосередньо використовують вирази для обробки об’єктів. Крім того, інструкції - це місце, де створюються об’єкти (наприклад, в інструкціях присвоювання), а в деяких інструкціях створюються абсолютно нові види об’єктів (функції, класи і так далі). Інструкції завжди присутні в модулях, які самі керуються інструкціями.

Основні стандартні модулі Python#

Поняття модуля#

Перед тим як приступити до вивчення модулів стандартної бібліотеки, необхідно визначити те, що в Python називається модулем. Відповідно до модульним підходом до програмування велике завдання розбивається на кілька дрібніших, кожну з яких (в ідеалі) вирішує окремий модуль. У різних методиках даються різні обмеження на розмір модулів, однак при побудові модульної структури програми важливіше скласти таку композицію модулів, яка дозволила б звести до мінімуму зв’язки між ними. Набір класів і функцій, що має безліч зв’язків між своїми елементами, було б логічно розташувати в одному модулі. Є і ще одне корисне зауваження: модулі повинно бути легше використовувати, ніж написати заново. Це означає, що модуль повинен мати зручний інтерфейс: набір функцій, класів і констант, який він пропонує своїм користувачам.

У мові Python набір модулів, присвячених одній проблемі, можна помістити в пакет. Більш детально можна ознайомитися про перелік і склад модулів на ресурсі https://pythonworld.ru/moduli.

Підключення модуля зі стандартної бібліотеки#

Підключити модуль можна за допомогою інструкції import. Наприклад, підключимо модуль os для отримання поточної директорії:

import os

os.getcwd()
'P:\\JupyterBook\\python-labs-book\\content\\intro'

Після ключового слова import вказується назва модуля. Після імпортування модуля його назва стає змінною, через яку можна отримати доступ до атрибутів модуля. Наприклад, можна звернутися до константи e, розташованої в модулі math:

import math

math.e
2.718281828459045

Варто відзначити, що якщо зазначений атрибут модуля не буде знайдений, викличеться виняток AttributeError. А якщо не вдасться знайти модуль для імпортування, то ImportError.

Використання псевдонімів#

Якщо назва модуля занадто довга, або вона вам не подобається з якихось інших причин, то для нього можна створити псевдонім, за допомогою ключового слова as.

import math as m

m.e
2.718281828459045

Доступ до всіх атрибутів модуля math здійснюється тільки за допомогою змінної m , а змінної math в цій програмі вже не буде (якщо, звичайно, ви після цього не напишете import math, тоді модуль буде доступний під ім’ям m і math).

Інструкція from#

Підключити певні атрибути модуля можна за допомогою інструкції from. Вона має кілька форматів:

from <Назва модуля> import <Атрибут 1> [as <Ім'я користувача 1>], [<Атрибут 2> [as <Ім'я користувача 2>] ...]
from <Назва модуля> import *

Перший формат дозволяє підключити з модуля тільки зазначені вами атрибути. Для довгих імен також можна призначити псевдонім, вказавши його після ключового слова as.

from math import e, ceil as c

print(e)
c(4.6)
2.718281828459045
5

Другий формат інструкції from дозволяє підключити всі (точніше, майже все) змінні з модуля. Для прикладу імпортуємо всі атрибути з модуля sys:

import sys

print(sys.version)
print(sys.version_info)
3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 22:22:05) [MSC v.1916 64 bit (AMD64)]
sys.version_info(major=3, minor=7, micro=3, releaselevel='final', serial=0)

Слід зауважити, що не всі атрибути будуть імпортовані. Якщо в модулі визначена змінна __all__ (список атрибутів, які можуть бути підключені), то будуть підключені тільки атрибути з цього списку. Якщо змінна __all__ не визначена, то будуть підключені всі атрибути, які не починаються з нижнього підкреслення. Крім того, необхідно враховувати, що імпортування всіх атрибутів з модуля може конфлікт імен головної програми, так як змінні, що мають однакові імена, будуть перезаписані.