Структура програми Python#
Програми на мові Python можна розкласти на такі складові, як модулі, інструкції, вирази і об’єкти. При цьому:
Програми діляться на модулі.
Модулі містять інструкції.
Інструкції складаються з виразів.
Вирази створюють і обробляють об’єкти.
Синтаксис мови 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__
не
визначена, то будуть підключені всі атрибути, які не починаються з нижнього
підкреслення. Крім того, необхідно враховувати, що імпортування всіх атрибутів
з модуля може конфлікт імен головної програми, так як змінні, що
мають однакові імена, будуть перезаписані.