Загрузка [MathJax]/jax/output/HTML-CSS/fonts/TeX/fontdata.js
 

printЯзык Python

printМодули

Определение модулей и пакетов

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

При использовании
import модуль
доступны все определения через модуль.имя. Также можно получить доступ к любому имени модуля через
from модуль import имя

Однако имена с подчеркиванием в начале не добавляются к именам другого модуля при импорте с помощью
from модуль import *
и можно явно указать для этого случая список импортируемых имен с помощью переменной:
__all__=('abc','_def')

Код вне функций исполняется. Можно проверить, вызывается модуль напрямую (python -m модуль) или импортируется с помощью условия:

if __name__ == '__main__':
  # вызывается
else:
  # импортируется

Пакет – это папка, в которой находятся модули и другие пакеты. Какие имена будут доступны при импорте пакета определяется в файле __init__.py, а в файле __main__.py пишется код, который выполняется при вызове пакета напрямую (python -m пакет).

Документирование

Документацией считается строковая константа, которая указывается в первой строке модуля (init.py для пакета), в определении класса, в блоке после заголовка функции. Эта информация помещается в специальный атрибут __doc__ соответствующего объекта и может быть просмотрена с помощью функции help:

class Polynom:
  """
Полином представляет собой функцию от x, 
которая вычисляется по формуле a[n-1]*x**(n-1)+...+a[1]*x+a[0],
где a[i] - коэффициенты полинома
  """
  def __init__(self,a):
    "В качестве аргумента конструктору можно указать любую последовательность чисел: Polynom([1,-2,1.5])"
    self.a=list(a)
  def __call__(self,x):
    "Для вычисления полинома P в точке x нужно вызвать P(x)"
    r=0.0
    for ai in reversed(self.a):
      r=r*x+ai
    return r
def degree(p):
  "Вычисляет степень полинома"
  return len(p.a)

p=Polynom([1,-2,1.5])
print(p(2))
help(Polynom) # В качестве аргумента можно указать класс или объект этого класса: help(p)
help(degree) # или функцию
Р’РІРѕРґ:

Выполнить
Вывод:

Модуль pydoc позволяет сформировать html-страницу с документацией по отдельному модулю или запустить локально сайт с документацией по всем доступным модулям:
python -m pydoc -b

Стандартные модули и пакеты

Название Состав
site импортируется автоматически, если не указан ключ -S
содержит функции:
exit(code=None), quit(code=None) – выход из программы
help(obj=None) – справка по указанному классу или классу объекта
string классы Formatter и Template
re регулярные выражения, подробнее
textwrap функции обработки текста
datetime классы для работы с датами и временем
heapq функции для работы с кучей, структурой данных, позволяющей быстро получать минимальный элемент
collections классы deque (универсальная очередь), Counter (разновидность dict для подсчета количества), функция namedtuple для создания классов для кортежей с именованными полями
collections.abc базовые абстрактные классы для проверки, что объект имеет нужный интерфейс
array класс array для компактного хранения значений простых типов
bisect функции для поиска значения в упорядоченном списке и вставке в него
copy функции копирования объектов
enum базовые классы Enum, IntEnum, StrEnum, Flag, IntFlag для определения перечислений
graphlib класс TopologicalSorter для топологической сортировка
math, cmath математические константы и функции
numbers базовые абстрактные классы для числовых типов
decimal класс Decimal и функции для вычислений с фиксированной точкой (так как для float 0.1*10!=1)
fractions класс Fraction для рациональных чисел
random функции для случайных величин
seed() – инициализация
randint(a, b) – случайное целое число от a до b включительно
random() – случайное число с плавающей точкой от 0 до 1
choice(seq) – выбор случайного значения из последовательности
shuffle(x) – перемешивание списка
statistics функции для статистических расчётов
itertools функции для создания и обработки генераторов
count(start=0, step=1) – бесконечная последовательность целых чисел, начиная со start
repeat(x) – бесконечное повторение x, repeat(x, n) – повтор x n раз
cycle(seq) – бесконечное повторение последовательности
product(s1,s2,…) – декартово произведение последовательностей, product(s,repeat=n) – декартово произведение n последовательностей s
permutations(seq, n=None) – все перестановки последовательности или размещения из n элементов последовательности (порядок важен)
combinations(seq, n) – все комбинации из n элементов последовательности (порядок не важен)
combinations_with_replacement(seq, n) – все комбинации с повторениями из n элементов последовательности (порядок не важен)
functools преобразование функций
@cache – кэширование вычислений функции ниже
@cached_property – аналогично для метода
cmp_to_key(func) – преобразование функции от двух аргументов, возвращающей -1, 0 или 1 в функцию сравнения для сортировки
@total_ordering – добавление остальных функций сравнения к классу по __lt__
func2=partial(func, /, *args, **keywords) – создание функции на основе существующей с частично заданными аргументами
r=reduce(func, seq, initial=None) – применить функцию от двух аргументов последовательно ко всем элементам последовательности, пока не получится одно значение
sys текущие настройки и функции нижнего уровня
argv – список аргументов командной строки при запуске, argv[0] – имя модуля
maxsize – максимальный размер
setrecursionlimit(limit) – ограничения на вложенность рекурсивных вызовов
stdin, stdout – файловые объекты для стандартного ввода и вывода, нужны для
* выбора другой кодировки: stdin.reconfigure(encoding='cp1251')
* ускорения ввода: stdin.readline() – ввод строки, включая '\n'
abc базовый абстрактный класс ABC и декоратор @abstractmethod
time функции измерения и управления временем
perf_counter() – время в секундах
perf_counter_ns() – время в ns
sleep(s) – ожидание в течение s секунд
logging функции для журналирования
doctest тестирование по примерам в строках документации
unittest,
test.support
модульные тесты
import collections
Point=collections.namedtuple('Point', ['x', 'y'])
p=Point(1,2)
print(p.x, p.y)

from datetime import date,timedelta
d=date(2025,2,20)
print(d.weekday())
d+=timedelta(10)
print(d.day,d.month)
print(date.today())
Р’РІРѕРґ:

Выполнить
Вывод:

Установка дополнительных пакетов

При установке Python в стандартной библиотеке находится минимальное количество пакетов для разных задач. Например, curses для создания интерфейсов консольных приложений, tkinter для GUI, sqlite3 для баз данных, http для разработки веб-клиентов и серверов. Дополнительные пакеты устанавливаются с сайта https://pypi.org с помощью программы pip:
pip install имя_пакета

Например,
pip install pcio

loading