Вы находитесь на странице: 1из 75

__future__

Определения будущих утверждений


__main__ Среда, в которой выполняется
сценарий верхнего уровня.
_thread Низкоуровневый API потоковой
передачи.

abc Абстрактные базовые классы согласно:


pep: `3119`.
aifc Чтение и запись аудиофайлов в формате
AIFF или AIFC.
argparse Параметр командной строки и
библиотека анализа аргументов.
array Эффективное использование
пространства массивов единообразных
числовых значений.
ast Классы абстрактного синтаксического
дерева и манипуляции с ними.
asynchat Поддержка асинхронных протоколов
команд / ответов.
asyncio Асинхронный ввод-вывод.
asyncore Базовый класс для разработки служб
обработки асинхронных сокетов.
atexit Зарегистрируйте и выполните функции
очистки.
audioop Управление необработанными
аудиоданными.

base64 RFC 3548: кодировки данных Base16,


Base32, Base64; Base85 и Ascii85
bdb Debugger framework.
binascii Инструменты для преобразования
двоичного представления в различные двоичные
представления в кодировке ASCII.
binhex Кодирует и декодирует файлы в формате
binhex4.
bisect Алгоритмы деления пополам массива для
двоичного поиска.
builtins Модуль, предоставляющий встроенное
пространство имен.
bz2 Интерфейсы для сжатия и распаковки bzip2.

c
Calendar Функции для работы с календарями,
включая некоторую эмуляцию программы Unix cal.
cgi Helpers для запуска скриптов Python через
общий интерфейс шлюза.
cgitb Настраиваемый обработчик трассировки для
сценариев CGI.
chunk Модуль для чтения фрагментов IFF.
cmath Математические функции для комплексных
чисел.
cmd Создавайте строчно-ориентированные
интерпретаторы команд.
code Средства для реализации циклов чтения-
оценки-печати.
кодеки Кодируют и декодируют данные и потоки.
codeop Скомпилировать (возможно, неполный) код
Python.
- типы данных контейнеров коллекций
collections.abc Абстрактные базовые классы для
контейнеров
colorsys Функции преобразования между RGB и
другими цветовыми системами.
compileall Инструменты для побайтовой
компиляции всех исходных файлов Python в дереве
каталогов.
- одновременный
concurrent.futures Выполнять вычисления
одновременно с использованием потоков или
процессов.
configparser Парсер файла конфигурации.
contextlib Утилиты для контекстов with-statement.
contextvars Контекстные переменные
копирование Операции мелкого и глубокого
копирования.
copyreg Зарегистрируйте функции поддержки
рассола.
cProfile
crypt (Unix) Функция crypt (), используемая для
проверки паролей Unix.
csv Запись и чтение табличных данных в файлы с
разделителями и из них.
ctypes Библиотека сторонних функций для Python.
- curses (Unix) Интерфейс библиотеки curses,
обеспечивающий работу с переносным
терминалом.
curses.ascii Константы и функции
принадлежности к множеству для символов ASCII.
curses.panel Расширение стека панелей, которое
добавляет глубины окнам curses.
curses.textpad Emacs-подобное редактирование
ввода в окне curses.
dataclasses Создает специальные методы для
пользовательских классов.
datetime Основные типы даты и времени.
- dbm Интерфейсы к различным форматам
"баз данных" Unix.
dbm.dumb Переносимая реализация
простого интерфейса DBM.
dbm.gnu (Unix) Новая интерпретация dbm в
GNU.
dbm.ndbm (Unix) Стандартный интерфейс
«базы данных», основанный на ndbm.
decimal Реализация общей спецификации
десятичной арифметики.
diffflib Помощники для вычисления различий
между объектами.
дизассемблер для байт-кода Python.
- distutils Поддержка сборки и установки
модулей Python в существующую установку
Python.
distutils.archive_util Функции утилиты для
создания архивных файлов (tarballs, zip-
файлы, ...)
distutils.bcppcompiler
distutils.ccompiler Абстрактный класс
CCompiler
distutils.cmd Предоставляет абстрактный
базовый класс: class: `~
distutils.cmd.Command`. Этот класс является
подклассом модулей в подпакете
distutils.command.
distutils.command Содержит по одному
модулю для каждой стандартной команды
Distutils.
distutils.command.bdist Создайте бинарный
установщик для пакета
distutils.command.bdist_dumb Создайте
«тупой» установщик - простой архив файлов
distutils.command.bdist_msi Создайте
двоичный дистрибутив как файл Windows MSI
distutils.command.bdist_packager
Абстрактный базовый класс для упаковщиков
distutils.command.bdist_rpm Создайте
двоичный дистрибутив как RPM и SRPM
Redhat
distutils.command.bdist_wininst Создайте
установщик Windows
distutils.command.build Сборка всех файлов
пакета
distutils.command.build_clib Сборка любых
библиотек C в пакете
distutils.command.build_ext Сборка любых
расширений в пакете
distutils.command.build_py Создайте
файлы .py / .pyc пакета
distutils.command.build_scripts Сборка
сценариев пакета
distutils.command.check Проверить
метаданные пакета
distutils.command.clean Очистить область
сборки пакета
distutils.command.config Выполнить
настройку пакета
distutils.command.install Установить пакет
distutils.command.install_data Установить
файлы данных из пакета
distutils.command.install_headers Установить
файлы заголовков C / C ++ из пакета
distutils.command.install_lib Установить
файлы библиотеки из пакета
distutils.command.install_scripts Установить
файлы сценария из пакета
distutils.command.register Зарегистрируйте
модуль в индексе пакетов Python
distutils.command.sdist Создайте исходный
дистрибутив
distutils.core Основные функции Distutils
distutils.cygwinccompiler
distutils.debug Предоставляет флаг отладки
для distutils
distutils.dep_util Служебные функции для
простой проверки зависимостей
distutils.dir_util Служебные функции для
работы с каталогами и деревьями каталогов
distutils.dist Предоставляет класс
Distribution, который представляет собой
сборку / установку / распространение модуля.
distutils.errors Предоставляет стандартные
исключения distutils
distutils.extension Предоставляет класс
Extension, используемый для описания
модулей расширения C / C ++ в сценариях
установки.
distutils.fancy_getopt Дополнительные
функции getopt
distutils.file_util Служебные функции для
работы с отдельными файлами
distutils.filelist Класс FileList, используемый
для просмотра файловой системы и
построения списков файлов.
distutils.log Простой механизм ведения
журнала в стиле: pep: `282`
distutils.msvccompiler Компилятор Microsoft
distutils.spawn Предоставляет функцию
spawn ()
distutils.sysconfig Низкоуровневый доступ к
информации о конфигурации интерпретатора
Python.
distutils.text_file Предоставляет класс
TextFile, простой интерфейс для текстовых
файлов.
distutils.unixccompiler Компилятор UNIX C
distutils.util Разное другие служебные
функции
distutils.version Реализует классы,
представляющие номера версий модулей.
doctest Тестовые фрагменты кода в строках
документации.
е
- Пакет электронной почты, поддерживающий
синтаксический анализ, обработку и создание
сообщений электронной почты.
email.charset Наборы символов
email.contentmanager Хранение и получение
контента из частей MIME
email.encoders Кодеры для полезной
нагрузки сообщений электронной почты.
email.errors Классы исключений,
используемые пакетом электронной почты.
email.generator Создавайте сообщения
электронной почты с обычным текстом из
структуры сообщений.
email.header Представляет заголовки,
отличные от ASCII
email.headerregistry Автоматический парсинг
заголовков на основе имени поля
email.iterators Перебирает дерево объектов
сообщения.
email.message Базовый класс,
представляющий сообщения электронной
почты.
email.mime Создавать сообщения MIME.
email.parser Анализируйте плоские
текстовые сообщения электронной почты для
создания структуры объекта сообщения.
email.policy Управление парсингом и
генерацией сообщений
email.utils Разные служебные программы
пакета электронной почты.
- кодировки
encodings.idna Реализация
интернационализированных доменных имен
encodings.mbcs Кодовая страница Windows
ANSI
encodings.utf_8_sig Кодек UTF-8 с подписью
BOM
surepip Загрузка установщика "pip" в
существующую установку Python или
виртуальную среду.
enum Реализация класса перечисления.
errno Стандартные системные символы errno.

ж
Faulthandler Дамп трассировки Python.
fcntl (Unix) Системные вызовы fcntl () и ioctl ().
filecmp Эффективное сравнение файлов.
fileinput Цикл по стандартному вводу или
списку файлов.
fnmatch соответствие имени файла в стиле
оболочки Unix шаблону.
форматирование Устаревшее: универсальное
средство форматирования вывода и
интерфейс устройства.
дроби Рациональные числа.
ftplib Клиент протокола FTP (требуются
сокеты).
functools Функции высшего порядка и
операции с вызываемыми объектами.

г
gc Интерфейс к сборщику мусора,
определяющему цикл.
getopt Портативный парсер для параметров
командной строки; поддерживают как короткие,
так и длинные имена опций.
getpass Переносимое чтение паролей и
получение идентификатора пользователя.
gettext Услуги многоязычной
интернационализации.
glob Расширение шаблона имени пути в стиле
оболочки Unix.
graphlib Функциональность для работы с
графоподобными структурами
grp (Unix) База данных группы (getgrnam () и
друзья).
gzip Интерфейсы для сжатия и распаковки
gzip с использованием файловых объектов.

час
hashlib Безопасные алгоритмы хеширования и
дайджеста сообщений.
heapq алгоритм очереди кучи (также
известная как приоритетная очередь).
hmac Keyed-Hashing для реализации
аутентификации сообщений (HMAC)
- html Помощники для работы с HTML.
html.entities Определения общих сущностей
HTML.
html.parser Простой парсер, который может
обрабатывать HTML и XHTML.
- HTTP коды статуса и сообщения HTTP
http.client Клиент протокола HTTP и HTTPS
(требуются сокеты).
http.cookiejar Классы для автоматической
обработки файлов cookie HTTP.
http.cookies Поддержка управления
состоянием HTTP (куки).
http.server HTTP-сервер и обработчики
запросов.

я
Клиент протокола IMAP4 imaplib (требуются
сокеты).
imghdr Определяет тип изображения,
содержащегося в файле или байтовом потоке.
imp Устарело: доступ к реализации оператора
импорта.
- importlib Реализация импортной техники.
importlib.abc Абстрактные базовые классы,
связанные с импортом
importlib.machinery Импортеры и дорожные
крючки
importlib.resources Чтение, открытие и
доступ к ресурсам пакета
importlib.util Код утилиты для импортеров
inspect Извлечь информацию и исходный код
из живых объектов.
io Core инструменты для работы с потоками.
ipaddress Библиотека управления IPv4 / IPv6.
itertools Функции, создающие итераторы для
эффективного цикла.

j
- json Кодировать и декодировать формат
JSON.
json.tool Командная строка для проверки и
красивой печати JSON.

k
ключевое слово Проверьте, является ли
строка ключевым словом в Python.

л
lib2to3 Библиотека 2to3
linecache Обеспечивает произвольный доступ
к отдельным строкам из текстовых файлов.
locale Услуги интернационализации.
- ведение журнала Гибкая система
регистрации событий для приложений.
logging.config Конфигурация модуля
регистрации.
logging.handlers Обработчики для модуля
регистрации.
lzma Оболочка Python для библиотеки сжатия
liblzma.

м
почтовый ящик Управление почтовыми
ящиками в различных форматах
mailcap Обработка файлов Mailcap.
marshal Конвертировать объекты Python в
потоки байтов и обратно (с разными
ограничениями).
math Математические функции (sin () и т. д.).
mimetypes Сопоставление расширений
файлов с типами MIME.
mmap Интерфейс для отображения файлов в
памяти для Unix и Windows.
modulefinder Найдите модули, используемые
скриптом.
msilib (Windows) Создание файлов
установщика Microsoft и файлов CAB.
msvcrt (Windows) Разные полезные
подпрограммы из среды выполнения MS VC +
+.
- многопроцессорность Параллелизм на
основе процессов.
multiprocessing.connection API для работы с
сокетами.
multiprocessing.dummy Тупая обертка вокруг
заправки нитей.
multiprocessing.managers Обмениваться
данными между процессами с общими
объектами.
multiprocessing.pool Создавать пулы
процессов.
multiprocessing.shared_memory
Предоставляет общую память для прямого
доступа между процессами.
multiprocessing.sharedctypes Выделяет
объекты ctypes из общей памяти.

п
netrc Загрузка файлов .netrc.
nis (Unix) Интерфейс к библиотеке Sun NIS
(Yellow Pages).
Клиент протокола NNTP nntplib (требуются
сокеты).
числа Числовые абстрактные базовые классы
(сложные, вещественные, интегральные и т.
д.).

о
оператор Функции, соответствующие
стандартным операторам.
optparse Не рекомендуется: библиотека
синтаксического анализа параметров
командной строки.
- os Разные интерфейсы операционной
системы.
os.path Операции с именами путей.
ossaudiodev (Linux, FreeBSD) Доступ к
аудиоустройствам, совместимым с OSS.

п
parser Доступ к деревьям синтаксического
анализа для исходного кода Python.
pathlib Пути к объектно-ориентированной
файловой системе
pdb Отладчик Python для интерактивных
интерпретаторов.
pickle Преобразование объектов Python в
потоки байтов и обратно.
pickletools Содержит подробные комментарии
о протоколах pickle и кодах операций pickle-
machine, а также о некоторых полезных
функциях.
трубы (Unix) Интерфейс Python для
конвейеров оболочки Unix.
pkgutil Утилиты для системы импорта.
platform Извлекает как можно больше
идентификационных данных платформы.
plistlib Создание и анализ файлов Apple plist.
Поплиб клиент протокола POP3 (требуются
сокеты).
posix (Unix) Наиболее распространенные
системные вызовы POSIX (обычно
используются через модуль os).
pprint Данные симпатичного принтера.
profile Профилировщик исходного кода Python.
pstats Объект статистики для использования с
профилировщиком.
pty (Linux) Обработка псевдотерминалов для
Linux.
pwd (Unix) База данных паролей (getpwnam ()
и друзья).
py_compile Создает файлы с байтовым кодом
из исходных файлов Python.
pyclbr Поддерживает извлечение информации
для браузера модуля Python.
pydoc Генератор документации и
интерактивная справочная система.

q
queue Синхронизированный класс очереди.
quopri Кодирование и декодирование файлов
с использованием кодировки MIME с
возможностью печати в кавычках.

р
random Генерировать псевдослучайные числа
с различными общими распределениями.
re Операции с регулярными выражениями.
readline (Unix) Поддержка GNU readline для
Python.
reprlib Альтернативная реализация repr () с
ограничениями по размеру.
ресурс (Unix) Интерфейс для предоставления
информации об использовании ресурсов в
текущем процессе.
rlcompleter завершение идентификатора
Python, подходящее для библиотеки чтения
GNU.
runpy Найдите и запустите модули Python без
их предварительного импорта.

s
sched Планировщик событий общего
назначения.
секреты Генерация безопасных случайных
чисел для управления секретами.
выберите «Ждать завершения ввода-вывода
для нескольких потоков».
селекторы Мультиплексирование ввода /
вывода высокого уровня.
полка сохраняемость объекта Python.
shlex Простой лексический анализ для языков,
подобных оболочке Unix.
shutil Высокоуровневые файловые операции,
включая копирование.
signal Установить обработчики асинхронных
событий.
Модуль сайта, отвечающий за конфигурацию
сайта.
smtpd Реализация SMTP-сервера на Python.
Клиент протокола SMTP smtplib (требуются
сокеты).
sndhdr Определяет тип звукового файла.
socket Низкоуровневый сетевой интерфейс.
socketserver Платформа для сетевых
серверов.
spwd (Unix) База данных теневых паролей
(getspnam () и друзья).
sqlite3 Реализация DB-API 2.0 с
использованием SQLite 3.x.
ssl TLS / SSL-оболочка для объектов сокета
stat Утилиты для интерпретации результатов
os.stat (), os.lstat () и os.fstat ().
статистика Функции математической
статистики
строка Общие строковые операции.
stringprep Подготовка строки согласно RFC
3453
struct Интерпретировать байты как
упакованные двоичные данные.
subprocess Управление подпроцессом.
sunau Обеспечивает интерфейс для звукового
формата Sun AU.
символ Константы, представляющие
внутренние узлы дерева синтаксического
анализа.
symtable Интерфейс к внутренним таблицам
символов компилятора.
sys Доступ к системным параметрам и
функциям.
sysconfig информация о конфигурации Python
syslog (Unix) Интерфейс к подпрограммам
библиотеки syslog Unix.

т
tabnanny Инструмент для обнаружения
проблем, связанных с пробелами, в исходных
файлах Python в дереве каталогов.
tarfile Чтение и запись архивных файлов в
формате tar.
telnetlib Класс клиента Telnet.
tempfile Создает временные файлы и
каталоги.
termios (Unix) Элемент управления tty в стиле
POSIX.
- пакет тестовых регрессионных тестов,
содержащий набор тестов для Python.
test.support Поддержка набора
регрессионных тестов Python.
test.support.bytecode_helper Инструменты
поддержки для проверки правильности
генерации байт-кода.
test.support.script_helper Поддержка тестов
выполнения скриптов Python.
test.support.socket_helper Поддержка тестов
сокетов.
textwrap Перенос текста и заполнение
многопоточность Параллелизм на основе
потоков.
время Доступ ко времени и преобразования.
timeit Измеряйте время выполнения
небольших фрагментов кода.
- Интерфейс tkinter к Tcl / Tk для графических
пользовательских интерфейсов
tkinter.colorchooser (Tk) Диалог выбора
цвета
tkinter.commondialog (Tk) Базовый класс
Tkinter для диалогов
т
kinter.dnd (Tk) Интерфейс перетаскивания
Tkinter
tkinter.filedialog (Tk) Диалоговые классы для
выбора файла
tkinter.font (Tk) Класс обертки шрифтов
Tkinter
tkinter.messagebox (Tk) Различные типы
диалоговых окон предупреждений
tkinter.scrolledtext (Tk) Текстовый виджет с
вертикальной полосой прокрутки.
tkinter.simpledialog (Tk) Простые диалоговые
окна
tkinter.tix Виджеты расширения Tk для
Tkinter
tkinter.ttk Набор тематических виджетов Tk
token Константы, представляющие конечные
узлы дерева синтаксического анализа.
tokenize Лексический сканер исходного кода
Python.
trace Отслеживать или отслеживать
выполнение оператора Python.
traceback Распечатать или получить обратную
трассировку стека.
tracemalloc Отслеживает выделение памяти.
tty (Unix) Служебные функции, выполняющие
общие операции управления терминалом.
turtle Образовательная среда для простых
графических приложений.
turtledemo Программа просмотра, например
сценарии черепахи
types Имена встроенных типов.
типизация Поддержка подсказок типа (см .:
pep: `484`).

ты
unicodedata Доступ к базе данных Unicode.
- unittest Фреймворк модульного тестирования
для Python.
unittest.mock Библиотека имитационных
объектов.
- urllib
urllib.error Классы исключений, созданные
urllib.request.
urllib.parse Разбирать URL-адреса или
собирать их из компонентов.
urllib.request Расширяемая библиотека для
открытия URL-адресов.
urllib.response Классы ответов,
используемые urllib.
urllib.robotparser Загрузите файл robots.txt и
ответьте на вопросы о возможности получения
других URL-адресов.
uu Кодировать и декодировать файлы в
формате uuencode.
uuid объекты UUID (универсальные
уникальные идентификаторы) согласно RFC
4122

v
venv Создание виртуальных сред.

ш
предупреждения Выдавать предупреждающие
сообщения и контролировать их удаление.
wave Обеспечивает интерфейс для звукового
формата WAV.
weakref Поддержка слабых ссылок и слабых
словарей.
webbrowser Простой в использовании
контроллер для веб-браузеров.
winreg (Windows) Процедуры и объекты для
управления реестром Windows.
winsound (Windows) Доступ к звуковому
оборудованию для Windows.
- Утилиты WSGI wsgiref и справочная
реализация.
wsgiref.handlers Базовые классы сервера /
шлюза WSGI.
wsgiref.headers Инструменты заголовка
ответа WSGI.
wsgiref.simple_server Простой HTTP-сервер
WSGI.
wsgiref.util Утилиты среды WSGI.
wsgiref.validate проверка соответствия
WSGI.

Икс
xdrlib Кодеры и декодеры для представления
внешних данных (XDR).
- xml-пакет, содержащий модули обработки
XML
xml.dom API объектной модели документа
для Python.
xml.dom.minidom Реализация минимальной
объектной модели документа (DOM).
xml.dom.pulldom Поддержка построения
частичных деревьев DOM из событий SAX.
xml.etree.ElementTree Реализация API
ElementTree.
xml.parsers.expat Интерфейс к не
проверяющему синтаксическому анализатору
XML Expat.
xml.parsers.expat.errors
xml.parsers.expat.model
xml.sax Пакет, содержащий базовые классы
SAX2 и вспомогательные функции.
xml.sax.handler Базовые классы для
обработчиков событий SAX.
xml.sax.saxutils Удобные функции и классы
для использования с SAX.
xml.sax.xmlreader Интерфейс, который
должны реализовать парсеры XML,
совместимые с SAX.
- xmlrpc
xmlrpc.client Доступ клиента XML-RPC.
xmlrpc.server Базовые реализации сервера
XML-RPC.

z
zipapp Управление исполняемыми zip-
архивами Python
zipfile Чтение и запись архивных файлов в
формате ZIP.
zipimport Поддержка импорта модулей Python
из архивов ZIP.
zlib Низкоуровневый интерфейс для процедур
сжатия и распаковки, совместимый с gzip.
zoneinfo Поддержка часовых поясов IANA
Исходный код: Lib / __ future__.py
__future__ - это настоящий модуль, который
служит трем целям:
• Чтобы не запутать существующие
инструменты, которые анализируют операторы
импорта и ожидают найти импортируемые ими
модули.
• Для обеспечения того, чтобы будущие
операторы выполнялись в выпусках до 2.1, по
крайней мере, приводили к исключениям
времени выполнения (импорт __future__
завершится ошибкой, потому что до 2.1 не
было модуля с таким именем).
• Задокументировать, когда были внесены
несовместимые изменения и когда они будут -
или были - сделаны обязательными. Это
форма исполняемой документации, которую
можно проверить программно, импортировав
__future__ и изучив его содержимое.

Каждый оператор в __future__.py имеет форму:

FeatureName = _Feature (OptionalRelease,


MandatoryRelease,
CompilerFlag)
где, как правило, OptionalRelease меньше, чем
MandatoryRelease, и оба являются кортежами
из 5 элементов той же формы, что и
sys.version_info:

(PY_MAJOR_VERSION, # 2 в 2.1.0a3; int


PY_MINOR_VERSION, # 1; int
PY_MICRO_VERSION, # 0; int
PY_RELEASE_LEVEL, # «альфа», «бета»,
«кандидат» или «финал»; строка
PY_RELEASE_SERIAL # 3; int
)

OptionalRelease записывает первый выпуск, в


котором эта функция была принята.

В случае MandatoryRelease, который еще не


произошел, MandatoryRelease предсказывает
выпуск, в котором функция станет частью
языка.

Else MandatoryRelease записывает, когда


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

MandatoryRelease также может иметь значение


None, что означает отказ от запланированной
функции.

Экземпляры класса _Feature имеют два


соответствующих метода: getOptionalRelease ()
и getMandatoryRelease ().

CompilerFlag - это флаг (битовое поле),


который следует передать в четвертом
аргументе встроенной функции compile (),
чтобы включить эту функцию в динамически
компилируемом коде. Этот флаг хранится в
атрибуте compiler_flag экземпляров _Feature.
Описание функции никогда не будет удалено
из __future__. С момента появления в Python
2.1 следующие функции нашли свое место в
языке с помощью этого механизма:

характерная черта

необязательно в

обязательно в

эффект

nested_scopes 2.1.0b1 2.2 PEP 227: статически


вложенные области видимости
генераторы 2.2.0a1 2.3 PEP 255: простые
генераторы
Division 2.2.0a2 3.0 PEP 238: Смена оператора
подразделения
absolute_import 2.5.0a1 3.0 PEP 328: Импорт:
многострочный и абсолютный / относительный
with_statement 2.5.0a1 2.6 PEP 343: Заявление
«с»
print_function 2.6.0a2 3.0 PEP 3105: Сделать
печать функцией
unicode_literals 2.6.0a2 3.0 PEP 3112: байтовые
литералы в Python 3000
generator_stop 3.5.0b1 3.7 PEP 479: Обработка
StopIteration внутри генераторов
аннотации 3.7.0b1 3.10 PEP 563: отложенная
оценка аннотаций

Смотрите также:
Будущие операторы Как компилятор
обрабатывает будущий импорт.

__main__ - среда сценария верхнего уровня


'__main__' - это имя области, в которой
выполняется код верхнего уровня. __Name__
модуля устанавливается равным '__main__'
при чтении из стандартного ввода, сценария
или из интерактивной подсказки.

Модуль может определить, работает ли он в


основной области, проверив собственное
__name__, что позволяет использовать общую
идиому для условного выполнения кода в
модуле, когда он запускается как сценарий или
с помощью python -m, но не при импорте :

если __name__ == "__main__":


# выполняем только если запускаем как
скрипт
главный()

Для пакета того же эффекта можно добиться,


включив модуль __main__.py, содержимое
которого будет выполнено при запуске модуля
с -m.

_thread - API низкоуровневой обработки


потоков

Этот модуль предоставляет низкоуровневые


примитивы для работы с несколькими
потоками (также называемыми легковесными
процессами или задачами) - несколькими
потоками управления, совместно
использующими свое глобальное
пространство данных. Для синхронизации
предусмотрены простые блокировки (также
называемые мьютексами или двоичными
семафорами). Модуль потоковой передачи
обеспечивает более простой в использовании
высокоуровневый API-интерфейс потоковой
передачи, построенный на основе этого
модуля.
Изменено в версии 3.7: раньше этот модуль
был необязательным, теперь он всегда
доступен.

Этот модуль определяет следующие


константы и функции:
исключение _thread.error
Возникает при ошибках, связанных с потоком.

Изменено в версии 3.3: Теперь это синоним


встроенной RuntimeError.
_thread.LockType
Это тип объектов блокировки.
_thread.start_new_thread (функция, аргументы
[, kwargs])
Запустить новый поток и вернуть его
идентификатор. Поток выполняет функцию-
функцию со списком аргументов args (который
должен быть кортежем). Необязательный
аргумент kwargs определяет словарь
аргументов ключевых слов.
Когда функция возвращается, поток молча
завершается.

Когда функция завершается с


необработанным исключением, вызывается
sys.unraisablehook () для обработки
исключения. Атрибут объекта аргумента
ловушки - это функция. По умолчанию
печатается трассировка стека, а затем поток
завершается (но другие потоки продолжают
выполняться).

Когда функция вызывает исключение


SystemExit, оно игнорируется.

Изменено в версии 3.8: теперь


sys.unraisablehook () используется для
обработки необработанных исключений.
_thread.interrupt_main ()
Имитируйте действие сигнала signal.SIGINT,
поступающего в основной поток. Поток может
использовать эту функцию для прерывания
основного потока.
Если signal.SIGINT не обрабатывается Python
(было установлено значение signal.SIG_DFL
или signal.SIG_IGN), эта функция ничего не
делает.
_thread.exit ()
Поднимите исключение SystemExit. Если он не
пойман, это приведет к тихому завершению
потока.
_thread.allocate_lock ()
Вернуть новый объект блокировки. Ниже
описаны способы блокировки. Замок
изначально разблокирован.
_thread.get_ident ()
Вернуть «идентификатор потока» текущего
потока. Это ненулевое целое число. Его
значение не имеет прямого значения; он
предназначен для использования в качестве
волшебного файла cookie, например для
индексации словаря данных, специфичных для
потока. Идентификаторы потока могут быть
повторно использованы при выходе из потока
и создании другого потока.
_thread.get_native_id ()
Возвращает собственный интегральный
идентификатор потока текущего потока,
назначенного ядром. Это неотрицательное
целое число. Его значение может
использоваться для однозначной
идентификации этого конкретного потока в
масштабах всей системы (до тех пор, пока
поток не завершится, после чего значение
может быть переработано ОС).

Доступность: Windows, FreeBSD, Linux, macOS,


OpenBSD, NetBSD, AIX.

Новое в версии 3.8.


_thread.stack_size ([размер])
Возвращает размер стека потоков,
используемый при создании новых потоков.
Необязательный аргумент размера указывает
размер стека, который будет использоваться
для последовательно создаваемых потоков, и
должен быть 0 (использовать платформу или
настроенное по умолчанию) или
положительное целочисленное значение не
менее 32 768 (32 КиБ). Если размер не указан,
используется 0. Если изменение размера
стека потока не поддерживается, возникает
ошибка RuntimeError. Если указанный размер
стека недействителен, возникает ошибка
ValueError, и размер стека не изменяется. 32
КиБ в настоящее время является
минимальным поддерживаемым значением
размера стека, чтобы гарантировать
достаточное пространство стека для самого
интерпретатора. Обратите внимание, что на
некоторых платформах могут быть
определенные ограничения на значения
размера стека, такие как требование
минимального размера стека> 32 КиБ или
требование выделения, кратного размеру
страницы системной памяти - для получения
дополнительной информации следует
обратиться к документации по платформе
(страницы 4 КиБ распространены;
использование кратного 4096 размера стека
является предлагаемым подходом в
отсутствие более конкретной информации).

Доступность: Windows, системы с потоками


POSIX.
_thread.TIMEOUT_MAX
Максимальное допустимое значение
параметра тайм-аута Lock.acquire (). Указание
тайм-аута больше этого значения вызовет
ошибку OverflowError.

Новое в версии 3.2.

Объекты блокировки имеют следующие


методы:
lock.acquire (waitflag = 1, timeout = -1)
Без какого-либо необязательного аргумента
этот метод получает блокировку
безоговорочно, при необходимости ожидая,
пока она не будет освобождена другим
потоком (только один поток может получить
блокировку - это причина их существования).

Если присутствует целочисленный аргумент


waitflag, действие зависит от его значения:
если он равен нулю, блокировка будет
получена только в том случае, если она может
быть получена немедленно, без ожидания, в
то время как, если оно не равно нулю,
блокировка будет получена безусловно, как
указано выше.

Если аргумент тайм-аута с плавающей запятой


присутствует и положителен, он указывает
максимальное время ожидания в секундах
перед возвратом. Отрицательный аргумент
тайм-аута указывает неограниченное
ожидание. Вы не можете указать тайм-аут,
если флаг ожидания равен нулю.

Возвращаемое значение - True, если


блокировка получена успешно, и False, если
нет.

Изменено в версии 3.2: Новый параметр тайм-


аута.

Изменено в версии 3.2: получение блокировок


теперь может прерываться сигналами в
POSIX.
Место
k.release ()
Снимает блокировку. Блокировка должна быть
получена раньше, но не обязательно тем же
потоком.
lock.locked ()
Вернуть статус блокировки: True, если она
была получена каким-либо потоком, False,
если нет.

В дополнение к этим методам объекты


блокировки также могут использоваться с
помощью оператора with, например:

import _thread

a_lock = _thread.allocate_lock ()

с a_lock:
print ("a_lock заблокирован, пока это
выполняется")
Предостережения:

• Потоки странным образом взаимодействуют


с прерываниями: исключение KeyboardInterrupt
будет получено произвольным потоком. (Когда
модуль сигналов доступен, прерывания всегда
переходят в основной поток.)
• Вызов sys.exit () или возникновение
исключения SystemExit эквивалентно вызову
_thread.exit ().
• Невозможно прервать выполнение метода
accept () для блокировки - исключение
KeyboardInterrupt произойдет после того, как
блокировка будет получена.
• Когда основной поток завершается, система
определяет, выживают ли другие потоки. В
большинстве систем они уничтожаются без
выполнения предложений try… finally или
деструкторов объектов.
• Когда основной поток завершает работу, он
не выполняет никакой обычной очистки (за
исключением того, что учитываются
предложения try… finally), а стандартные
файлы ввода-вывода не сбрасываются.
Исходный код: Lib / abc.py

Этот модуль предоставляет инфраструктуру


для определения абстрактных базовых
классов (ABC) в Python, как описано в PEP
3119; см. PEP, чтобы узнать, почему это было
добавлено в Python. (См. Также PEP 3141 и
модуль чисел относительно иерархии типов
для чисел на основе ABC.)

В модуле коллекций есть несколько


конкретных классов, производных от ABC; они,
конечно, могут быть получены дальше. Кроме
того, в подмодуле collections.abc есть
несколько ABC, которые можно использовать
для проверки того, предоставляет ли класс
или экземпляр определенный интерфейс,
например, является ли он хешируемым или
отображением.

Этот модуль предоставляет метакласс


ABCMeta для определения ABC и
вспомогательный класс ABC для
альтернативного определения ABC через
наследование:
класс abc.ABC
Вспомогательный класс, метаклассом которого
является ABCMeta. С помощью этого класса
можно создать абстрактный базовый класс,
просто производя его от ABC, избегая иногда
запутанного использования метакласса,
например:

из abc импорт ABC

класс MyABC (ABC):


проходить

Обратите внимание, что типом ABC по-


прежнему является ABCMeta, поэтому для
наследования от ABC требуются обычные
меры предосторожности в отношении
использования метакласса, поскольку
множественное наследование может привести
к конфликтам метаклассов. Можно также
определить абстрактный базовый класс,
передав ключевое слово метакласса и
напрямую используя ABCMeta, например:

из abc импорт ABCMeta

класс MyABC (метакласс = ABCMeta):


проходить

Новое в версии 3.4.


класс abc.ABCMeta
Метакласс для определения абстрактных
базовых классов (ABC).

Используйте этот метакласс для создания


ABC. ABC может быть напрямую
подклассифицирован, а затем действовать как
смешанный класс. Вы также можете
зарегистрировать несвязанные конкретные
классы (даже встроенные классы) и
несвязанные ABC как «виртуальные
подклассы» - они и их потомки будут считаться
подклассами регистрирующего ABC
встроенной функцией issubclass (), но
регистрирующая ABC выиграла 'не
отображаются в их MRO (Порядок разрешения
методов), и реализации методов,
определенные регистрирующим ABC, не будут
вызываемыми (даже через super ()). [1]

Классы, созданные с помощью метакласса


ABCMeta, имеют следующий метод:
регистр (подкласс)
Зарегистрируйте подкласс как «виртуальный
подкласс» этого ABC. Например:

из abc импорт ABC

класс MyABC (ABC):


проходить

MyABC.register (кортеж)
assert issubclass (кортеж, MyABC)
assert isinstance ((), MyABC)

Изменено в версии 3.3: Возвращает


зарегистрированный подкласс, что позволяет
использовать его в качестве декоратора
класса.

Изменено в версии 3.4: для обнаружения


вызовов register () вы можете использовать
функцию get_cache_token ().

Вы также можете переопределить этот метод в


абстрактном базовом классе:
__subclasshook __ (подкласс)
(Должен быть определен как метод класса.)

Проверьте, считается ли подкласс подклассом


этого ABC. Это означает, что вы можете
дополнительно настроить поведение
issubclass без необходимости вызывать
register () для каждого класса, который вы
хотите рассматривать как подкласс ABC. (Этот
метод класса вызывается из метода
__subclasscheck __ () ABC.)

Этот метод должен возвращать True, False или


NotImplemented. Если он возвращает True,
подкласс считается подклассом этого ABC.
Если он возвращает False, подкласс не
считается подклассом этого ABC, даже если он
обычно является одним из них. Если он
возвращает NotImplemented, проверка
подкласса продолжается обычным
механизмом.

Чтобы продемонстрировать эти концепции,


посмотрите на это определение ABC:

класс Foo:
def __getitem __ (сам, индекс):
...
def __len __ (сам):
...
def get_iterator (сам):
вернуть iter (self)

класс MyIterable (ABC):

@abstractmethod
def __iter __ (сам):
в то время как False:
не давать

def get_iterator (сам):


вернуть self .__ iter __ ()

@classmethod
def __subclasshook __ (cls, C):
если cls MyIterable:
если есть ("__ iter__" в B .__ dict__ для
B в C .__ mro__):
вернуть True
return NotImplemented
MyIterable.register (Foo)

ABC MyIterable определяет стандартный


итеративный метод __iter __ () как абстрактный
метод. Приведенная здесь реализация все
еще может быть вызвана из подклассов.
Метод get_iterator () также является частью
абстрактного базового класса MyIterable, но
его не нужно переопределять в неабстрактных
производных классах.

Определенный здесь метод класса


__subclasshook __ () говорит, что любой класс,
который имеет метод __iter __ () в своем
__dict__ (или в одном из его базовых классов,
доступ к которому осуществляется через
список __mro__), также считается MyIterable.

Наконец, последняя строка делает Foo


виртуальным подклассом MyIterable, даже
если он не определяет метод __iter __ () (он
использует итеративный протокол старого
стиля, определенный в терминах __len __ () и
__getitem __ ()). Обратите внимание, что это не
сделает get_iterator доступным как метод Foo,
поэтому он предоставляется отдельно.

Модуль abc также предоставляет следующий


декоратор:
@ abc.abstractmethod
Декоратор, указывающий на абстрактные
методы.

Использование этого декоратора требует,


чтобы метакласс класса был ABCMeta или был
производным от него. Класс, у которого есть
метакласс, производный от ABCMeta, не
может быть создан, если только все

его абстрактные методы и свойства


переопределяются. Абстрактные методы могут
быть вызваны с использованием любого из
обычных механизмов вызова «super».
abstractmethod () может использоваться для
объявления абстрактных методов для свойств
и дескрипторов.
Динамическое добавление абстрактных
методов в класс или попытки изменить статус
абстракции метода или класса после его
создания не поддерживаются. Abstractmethod
() влияет только на подклассы, производные с
использованием обычного наследования;
«Виртуальные подклассы»,
зарегистрированные с помощью метода
register () ABC, не затрагиваются.

Когда abstractmethod () применяется в


сочетании с другими дескрипторами метода,
его следует применять как самый внутренний
декоратор, как показано в следующих
примерах использования:

класс C (ABC):
@abstractmethod
def my_abstract_method (сам, ...):
...
@classmethod
@abstractmethod
def my_abstract_classmethod (cls, ...):
...
@staticmethod
@abstractmethod
def my_abstract_staticmethod (...):
...

@свойство
@abstractmethod
def my_abstract_property (сам):
...
@ my_abstract_property.setter
@abstractmethod
def my_abstract_property (self, val):
...

@abstractmethod
def _get_x (сам):
...
@abstractmethod
def _set_x (self, val):
...
x = свойство (_get_x, _set_x)

Чтобы правильно взаимодействовать с


механизмом абстрактного базового класса,
дескриптор должен идентифицировать себя
как абстрактный, используя
__isabstractmethod__. Как правило, этот
атрибут должен иметь значение True, если
какой-либо из методов, используемых для
создания дескриптора, является абстрактным.
Например, встроенное свойство Python
выполняет следующие функции:

Дескриптор класса:
...
@свойство
def __isabstractmethod __ (сам):
вернуть любой (getattr (f,
'__isabstractmethod__', False) для
f в (self._fget, self._fset, self._fdel))
Заметка:
В отличие от абстрактных методов Java, эти
абстрактные методы могут иметь реализацию.
Эту реализацию можно вызвать с помощью
механизма super () из класса, который ее
переопределяет. Это может быть полезно в
качестве конечной точки для супервызова в
структуре, использующей кооперативное
множественное наследование.

Модуль abc также поддерживает следующие


устаревшие декораторы:
@ abc.abstractclassmethod

Новое в версии 3.2.

Не рекомендуется, начиная с версии 3.3:


теперь можно использовать classmethod с
abstractmethod (), что делает этот декоратор
избыточным.
Подкласс встроенного метода class (),
указывающий на абстрактный метод класса. В
остальном он похож на abstractmethod ().

Этот особый случай не рекомендуется,


поскольку декоратор classmethod () теперь
правильно идентифицируется как абстрактный
при применении к абстрактному методу:

класс C (ABC):
@classmethod
@abstractmethod
def my_abstract_classmethod (cls, ...):
...

@ abc.abstractstaticmethod

Новое в версии 3.2.

Не рекомендуется, начиная с версии 3.3:


Теперь можно использовать staticmethod с
abstractmethod (), что делает этот декоратор
избыточным.

Подкласс встроенного staticmethod (),


указывающий на абстрактный статический
метод. В остальном он похож на
abstractmethod ().

Этот особый случай не рекомендуется, так как


декоратор staticmethod () теперь правильно
идентифицируется как абстрактный при
применении к абстрактному методу:

класс C (ABC):
@staticmethod
@abstractmethod
def my_abstract_staticmethod (...):
...

@ abc.abstractproperty
Не рекомендуется с версии 3.3: теперь можно
использовать свойство property.getter (),
property.setter () и property.deleter () с
abstractmethod (), что делает этот декоратор
избыточным.

Подкласс встроенного свойства (),


указывающий на абстрактное свойство.

Этот особый случай не рекомендуется,


поскольку декоратор property () теперь
правильно идентифицируется как абстрактный
при применении к абстрактному методу:

класс C (ABC):
@свойство
@abstractmethod
def my_abstract_property (сам):
...
В приведенном выше примере определяется
свойство только для чтения; вы также можете
определить абстрактное свойство чтения-
записи, соответствующим образом пометив
один или несколько базовых методов как
абстрактные:

класс C (ABC):
@свойство
def x (себя):
...

@ x.setter
@abstractmethod
def x (self, val):
...

Если только некоторые компоненты являются


абстрактными, для создания конкретного
свойства в подклассе необходимо обновить
только эти компоненты:
класс D (C):
@ C.x.setter
def x (self, val):
...

Модуль abc также предоставляет следующие


функции:
abc.get_cache_token ()
Возвращает текущий токен кэша абстрактного
базового класса.

Маркер - это непрозрачный объект (который


поддерживает проверку равенства),
идентифицирующий текущую версию кэша
абстрактного базового класса для виртуальных
подклассов. Маркер изменяется при каждом
вызове ABCMeta.register () на любом ABC.

Новое в версии 3.4.


Сноски

[1] Программистам на C ++ следует отметить,


что концепция виртуального базового класса
Python отличается от концепции C ++.

Исходный код: Lib / aifc.py

Этот модуль обеспечивает поддержку чтения и


записи файлов AIFF и AIFF-C. AIFF - это
формат файла обмена аудио, формат для
хранения цифровых аудиосэмплов в файле.
AIFF-C - это более новая версия формата,
которая включает возможность сжатия
аудиоданных.
Аудио файлы имеют ряд параметров,
описывающих аудиоданные. Частота
дискретизации или частота кадров - это
количество дискретизаций звука в секунду.
Количество каналов указывает, является ли
звук моно, стерео или квадро. Каждый кадр
состоит из одной выборки на канал. Размер
выборки - это размер каждой выборки в
байтах. Таким образом, кадр состоит из n
каналов * байтов сэмплирования, а звуковая
ценность секунды состоит из n байтов *
сэмплирования * частоты кадров.

Например, звук с качеством компакт-диска


имеет размер выборки в два байта (16 бит),
использует два канала (стерео) и имеет
частоту кадров 44 100 кадров в секунду. Это
дает размер кадра 4 байта (2 * 2), а значение
секунды занимает 2 * 2 * 44100 байтов (176
400 байтов).

Модуль aifc определяет следующую функцию:


aifc.open (файл, режим = Нет)
Откройте файл AIFF или AIFF-C и верните
экземпляр объекта с помощью методов,
описанных ниже. Файл аргумента - это либо
строка с именем файла, либо файловый
объект. режим должен быть 'r' или 'rb', когда
файл должен быть открыт для чтения, или 'w'
или 'wb', когда файл должен быть открыт для
записи. Если он не указан, используется
file.mode, если он существует, в противном
случае используется rb. При использовании
для записи файловый объект должен быть
доступным для поиска, если вы заранее не
знаете, сколько сэмплов вы собираетесь
записать, и используете writeframesraw () и
setnframes (). Функцию open () можно
использовать в операторе with. Когда блок with
завершается, вызывается метод close ().

Изменено в версии 3.4: добавлена поддержка


оператора with.

Объекты, возвращаемые функцией open () при


открытии файла для чтения, имеют
следующие методы:
aifc.getnchannels ()
Возвращает количество аудиоканалов (1 для
моно, 2 для стерео).
aifc.getsampwidth ()
Возвращает размер отдельных выборок в
байтах.
aifc.getframerate ()
Возвращает частоту дискретизации
(количество аудиокадров в секунду).
aifc.getnframes ()
Возвращает количество аудиокадров в файле.
aifc.getcomptype ()
Возвращает массив байтов длиной 4,
описывающий тип сжатия, используемый в
аудиофайле. Для файлов AIFF возвращаемое
значение - b'NONE '.
aifc.getcompname ()
Возвращает массив байтов, конвертируемый в
удобочитаемое описание типа сжатия,
используемого в аудиофайле. Для файлов
AIFF возвращаемое значение b'не сжато '.
aifc.getparams ()
Возвращает namedtuple () (nchannels,
sampwidth, framerate, nframes, comptype,
compname), что эквивалентно выводу методов
get * ().
aifc.getmarkers ()
Вернуть список маркеров в аудиофайл.
Маркер состоит из набора из трех элементов.
Первый - это идентификатор метки (целое
число), второй - положение метки в кадрах от
начала данных (целое число), третий - имя
метки (строка).
aifc.getmark (идентификатор)
Верните кортеж, как описано в getmarkers ()
для метки с данным идентификатором.
aifc.readframes (nframes)
Прочитать и вернуть следующие кадры
nframes из аудиофайла. Возвращаемые
данные представляют собой строку,
содержащую для каждого кадра несжатые
образцы всех каналов.
aifc.rewind ()
Перемотайте указатель чтения назад.
Следующий readframes () начнется с самого
начала.
aifc.setpos (поз.)
Перейти к указанному номеру кадра.
aifc.tell ()
Вернуть текущий номер кадра.
aifc.close ()
Закройте файл AIFF. После вызова этого
метода объект больше не может
использоваться.

Объекты, возвращаемые open () при открытии


файла для записи, имеют все
вышеперечисленные методы, за исключением
readframes () и setpos (). Кроме того,
существуют следующие методы. Методы get *
() могут быть вызваны только после того, как
были вызваны соответствующие методы set *
(). Перед первым writeframes () или
writeframesraw () должны быть заполнены все
параметры, кроме количества кадров.
aifc.aiff ()
Создайте файл AIFF. По умолчанию создается
файл AIFF-C, если имя файла не
заканчивается на «.aiff», и в этом случае по
умолчанию используется файл AIFF.
aifc.aifc ()
Создайте файл AIFF-C. По умолчанию
создается файл AIFF-C, если имя файла не
заканчивается на «.aiff», и в этом случае по
умолчанию используется файл AIFF.
aifc.setnchannels (nchannels)
Укажите количество каналов в аудиофайле.
aifc.setsampwidth (ширина)
Укажите размер аудиосэмплов в байтах.
aifc.setframerate (скорость)
Укажите частоту дискретизации в кадрах в
секунду.
aifc.setnframes (nframes)
Укажите количество кадров, которые должны
быть записаны в аудиофайл. Если этот
параметр не установлен или установлен
неправильно, файл должен поддерживать
поиск.
aifc.setcomptype (тип, имя)
Укажите тип сжатия. Если не указано иное,
аудиоданные не будут сжиматься. В файлах
AIFF сжатие невозможно. Параметр имени
должен представлять собой удобочитаемое
описание типа сжатия в виде массива байтов,
параметр типа должен быть массивом байтов
длиной 4. В настоящее время следующие

Поддерживаются типы сжатия: b'NONE ',


b'ULAW', b'ALAW ', b'G722'.
aifc.setparams (nchannels, sampwidth, framerate,
comptype, compname)
Установите сразу все вышеперечисленные
параметры. Аргумент - это кортеж, состоящий
из различных параметров. Это означает, что
можно использовать результат вызова
getparams () в качестве аргумента для
setparams ().
aifc.setmark (идентификатор, позиция, имя)
Добавьте метку с заданным идентификатором
(больше 0) и заданным именем в данной
позиции. Этот метод можно вызвать в любое
время до close ().
aifc.tell ()
Вернуть текущую позицию записи в выходной
файл. Полезно в сочетании с setmark ().
aifc.writeframes (данные)
Записать данные в выходной файл. Этот
метод можно вызвать только после установки
параметров аудиофайла.

Изменено в версии 3.4: теперь принимаются


любые байтовые объекты.
aifc.writeframesraw (данные)
Подобно writeframes (), за исключением того,
что заголовок аудиофайла не обновляется.

Изменено в версии 3.4: теперь принимаются


любые байтовые объекты.
aifc.close ()
Закройте файл AIFF. Заголовок файла
обновляется, чтобы отразить фактический
размер аудиоданных. После вызова этого
метода объект больше не может
использоваться.

Вам также может понравиться