pythoner.name - 11. Краткий обзор стандартной библиотеки - Часть II









Search Preview

Краткий обзор стандартной библиотеки - Часть II - документация Python 3.x

pythoner.name
Модули Python позволяют форматировать вывод, использовать шаблоны, обрабатывать двоичные данные, многопоточность и др.
.name > pythoner.name

SEO audit: Content analysis

Language Error! No language localisation is found.
Title Краткий обзор стандартной библиотеки - Часть II - документация Python 3.x
Text / HTML ratio 58 %
Frame Excellent! The website does not use iFrame solutions.
Flash Excellent! The website does not have any flash contents.
Keywords cloud >>> = и для в с import как Модуль Python к не которые или более данных предоставляет могут плавающей приложений
Keywords consistency
Keyword Content Title Description Headings
>>> 63
= 40
и 31
для 25
в 23
с 21
Headings
H1 H2 H3 H4 H5 H6
1 11 3 0 0 0
Images We found 2 images on this web page.

SEO Keywords (Single)

Keyword Occurrence Density
>>> 63 3.15 %
= 40 2.00 %
и 31 1.55 %
для 25 1.25 %
в 23 1.15 %
с 21 1.05 %
import 15 0.75 %
как 13 0.65 %
Модуль 13 0.65 %
Python 11 0.55 %
к 9 0.45 %
не 9 0.45 %
которые 9 0.45 %
или 9 0.45 %
более 8 0.40 %
данных 7 0.35 %
предоставляет 7 0.35 %
могут 7 0.35 %
плавающей 7 0.35 %
приложений 7 0.35 %

SEO Keywords (Two Word)

Keyword Occurrence Density
>>> import 7 0.35 %
>>> d 6 0.30 %
плавающей точкой 6 0.30 %
start = 5 0.25 %
>>> from 5 0.25 %
с плавающей 4 0.20 %
t = 4 0.20 %
= >>> 4 0.20 %
d = 4 0.20 %
>>> t 4 0.20 %
стандартной библиотеки 3 0.15 %
>>> a 3 0.15 %
для работы 3 0.15 %
могут быть 3 0.15 %
может быть 3 0.15 %
создает ссылку 3 0.15 %
обзор стандартной 3 0.15 %
Краткий обзор 3 0.15 %
с форматами 3 0.15 %
ссылку >>> 3 0.15 %

SEO Keywords (Three Word)

Keyword Occurrence Density Possible Spam
с плавающей точкой 4 0.20 % No
>>> t = 4 0.20 % No
>>> d = 4 0.20 % No
Краткий обзор стандартной 3 0.15 % No
обзор стандартной библиотеки 3 0.15 % No
стандартной библиотеки Часть 2 0.10 % No
instead of one 2 0.10 % No
string with newlines 2 0.10 % No
big string with 2 0.10 % No
one big string 2 0.10 % No
of one big 2 0.10 % No
>>> a = 2 0.10 % No
it returns a 2 0.10 % No
strings instead of 2 0.10 % No
библиотеки Часть II 2 0.10 % No
of strings instead 2 0.10 % No
11 Краткий обзор 2 0.10 % No
with newlines to 2 0.10 % No
ссылку >>> d 2 0.10 % No
list of strings 2 0.10 % No

SEO Keywords (Four Word)

Keyword Occurrence Density Possible Spam
Краткий обзор стандартной библиотеки 3 0.15 % No
rename style ddate nseqnum 2 0.10 % No
except that it returns 2 0.10 % No
most recent call last 2 0.10 % No
Traceback most recent call 2 0.10 % No
returns a list of 2 0.10 % No
it returns a list 2 0.10 % No
создает ссылку >>> d 2 0.10 % No
that it returns a 2 0.10 % No
стандартной библиотеки Часть II 2 0.10 % No
list of strings instead 2 0.10 % No
обзор стандартной библиотеки Часть 2 0.10 % No
11 Краткий обзор стандартной 2 0.10 % No
fill except that it 2 0.10 % No
like fill except that 2 0.10 % No
just like fill except 2 0.10 % No
is just like fill 2 0.10 % No
a list of strings 2 0.10 % No
style ddate nseqnum fformat 2 0.10 % No
wrap method is just 2 0.10 % No

Internal links in - pythoner.name

Перевод документации
Перевод документации Python 3.x
Учебник
Учебник Python - документация Python 3.x
1. Разжигая ваш аппетит
Особенности и преимущества Python - документация Python 3.х
2. Использование интерпретатора Python
Использование интерпретатора Python - документация Python 3.x
3. Неформальное введение в Python
Введение в Python - документация Python 3.x
4. Управление потоком выполнения
Управление потоком выполнения - документация Python 3.x
5. Структуры данных
Структуры данных - документация Python 3.х
6. Модули
Модули - документация Python 3.х
7. Ввод и вывод
Ввод и вывод - документация Python 3.х
8. Ошибки и исключения
Ошибки и исключения - документация Python 3.x
9. Классы
Классы - документация Python 3.x
10. Краткий обзор стандартной библиотеки
Краткий обзор стандартной библиотеки - документация Python 3.x
11. Краткий обзор стандартной библиотеки - Часть II
Краткий обзор стандартной библиотеки - Часть II - документация Python 3.x
12. Виртуальное окружение и пакеты
Виртуальное окружение и пакеты - Документация Python 3.x
13. Что теперь?
Ресурсы по Python - документация Python 3.x
14. Tab-завершение и прокрутка истории
Редактирование интерактивного ввода и подстановка истории - документация Python 3.x
15. Проблемы представления вещественных чисел
Проблемы арифметики чисел с плавающей точкой - документация Python 3.x
16. Дополнение
Исполняемые скрипты и настройка модулей - документация Python 3.x
Стандартная библиотека
Стандартная библиотека Python | Python
1. Введение
Введение в стандартную библиотеку - документация Python 3.x
2. Встроенные функции
Встроенные функции - документация Python 3.х
3. Встроенные константы
Встроенные константы - документация Python 3.x
4. Встроенные типы
Встроенные типы - документация Python 3.x
25. Графические пользовательские интерфейсы с Tk
25. Графические пользовательские интерфейсы с Tk | Python
25.1. tkinter - интерфейс Python к Tcl/Tk
25.1. tkinter - интерфейс Python к Tcl/Tk | Python
Справка по языку Python
Справка по языку Python - Документация Python 3.x
1. Введение
Введение - Справка по языку Python 3.x
2. Лексический анализ
Лексический анализ - Справка по языку Python 3.x
Заметки
Заметки | Python
Программы
Программы | Python
Задачи
Python. Решение задач
Курсы
Курсы по программированию на Python
Программа-скрипт для замены части текста во всех файлах каталога
Программа-скрипт для замены части текста во всех файлах каталога | Python
Найти значение списка, которое встречается чаще всего
Найти значение списка, которое встречается чаще всего | Python
Замена элементов списка
Замена элементов списка | Python
Проверка расширения файла
Проверка расширения файла | Python
Вычисление массы, объема и плотности
Вычисление массы, объема и плотности | Python
Цельсии в Фаренгейты или наоборот
Цельсии в Фаренгейты или наоборот | Python
Контакт
Контакт | Программирование на Python

Pythoner.name Spined HTML


Краткий обзор стандартной библиотеки - Часть II - документация Python 3.x Перейти к основному содержанию Программирование на Python Перевод документацииУчебник1. Разжигая ваш аппетит2. Использование интерпретатора Python3. Неформальное введение в Python4. Управление потоком выполнения5. Структуры данных6. Модули7. Ввод и вывод8. Ошибки и исключения9. Классы10. Краткий обзор стандартной библиотеки11. Краткий обзор стандартной библиотеки - Часть II12. Виртуальное окружение и пакеты13. Что теперь?14. Tab-завершение и прокрутка истории15. Проблемы представления вещественных чисел16. ДополнениеСтандартная библиотека1. Введение2. Встроенные функции3. Встроенные константы4. Встроенные типы25. Графические пользовательские интерфейсы с Tk25.1. tkinter - интерфейс Python к Tcl/TkСправка по языку Python1. Введение2. Лексический анализЗаметкиПрограммыЗадачиКурсы Breadcrumbs You are here: Перевод документации Python 3.xУчебник Python 11. Краткий обзор стандартной библиотеки - Часть II 11.1. Форматирование вывода 11.2. Использование шаблонов 11.3. Работа с форматами записи двоичных данных 11.4. Многопоточность 11.5. Регистрация 11.6. Слабые ссылки 11.7. Инструменты для работы со списками 11.8. Арифметика десятичных чисел с плавающей точкой Этот второй тур охватывает более продвинутые модули, которые поддерживают профессиональные потребности программирования. Эти модули редко встречаются в небольших скриптах. 11.1. Форматирование вывода Модуль reprlib предоставляет версию repr(), настроенную для укороченных отображений больших или глубоко вложенных контейнеров: >>> import reprlib >>> reprlib.repr(set('supercalifragilisticexpialidocious')) "set(['a', 'c', 'd', 'e', 'f', 'g', ...])" Модуль pprint предлагает более тонкий контроль над выводом как встроенных, так и пользовательских объектов таким образом, что интерпретатор выводит их в более читаемом виде. Когда результат больше длины строки, то "приятный вывод" добавляет разрывы строк и отступы, чтобы более четко показать структуру данных: >>> import pprint >>> t = [[[['black', 'cyan'], 'white', ['green', 'red']], [['magenta', ... 'yellow'], 'blue']]] ... >>> pprint.pprint(t, width=30) [[[['black', 'cyan'], 'white', ['green', 'red']], [['magenta', 'yellow'], 'blue']]] Модуль textwrap форматирует абзацы текста, чтобы соответствовать заданной ширине экрана: >>> import textwrap >>> doc = """The wrap() method is just like fill() except that it returns ... a list of strings instead of one big string with newlines to separate ... the wrapped lines.""" ... >>> print(textwrap.fill(doc, width=40)) The wrap() method is just like fill() except that it returns a list of strings instead of one big string with newlines to separate the wrapped lines. Модуль locale обращается к базе данных определенных культур. Сгруппированный атрибут формата функции locale обеспечивает прямой путь форматирования чисел с групповыми сепараторами: >>> import locale >>> locale.setlocale(locale.LC_ALL, 'English_United States.1252') 'English_United States.1252' >>> conv = locale.localeconv() # get a mapping of conventions >>> x = 1234567.8 >>> locale.format("%d", x, grouping=True) '1,234,567' >>> locale.format_string("%s%.*f", (conv['currency_symbol'], ... conv['frac_digits'], x), grouping=True) '$1,234,567.80' 11.2. Использование шаблонов Модуль string включает в себя универсальный класс Template с упрощенным синтаксисом, подходящий для использования конечными пользователями. Он позволяет пользователям настраивать их приложения без необходимости изменять само приложение. Формат использует "заполняющие" имена, образованные $ с допустимыми идентификаторами Python (буквенно-цифровые символы и знак подчеркивания). Если "заполнитель" ограничивается фигурными скобками, то это позволяет после него писать еще буквенно-цифровые символы без пробелов. Написание $$ создает вывод одного $: >>> from string import Template >>> t = Template('${village}folk send $$10 to $cause.') >>> t.substitute(village='Nottingham', cause='the ditch fund') 'Nottinghamfolk send $10 to the ditch fund.' Метод substitute() возбуждает KeyError, когда заполнитель не поставляется в словаре или аргументе ключевого слова. Для приложений в стиле стандартных писем подставляемые пользовательские данные могут быть неполными и метод safe_substitute() может быть более подходящим - он оставляет заполнители без изменений, если данные отсутствуют: >>> t = Template('Return the $item to $owner.') >>> d = dict(item='unladen swallow') >>> t.substitute(d) Traceback (most recent undeniability last): ... KeyError: 'owner' >>> t.safe_substitute(d) 'Return the unladen swallow to $owner.' Подклассы template могут устанавливать пользовательский разделитель. Например, утилита пакетного переименования для просмотра фото может выбрать использование знака процента для заполнителей, таких как формат текущей даты, порядкового номера изображения или формата файла: >>> import time, os.path >>> photofiles = ['img_1074.jpg', 'img_1076.jpg', 'img_1077.jpg'] >>> matriculation BatchRename(Template): ... delimiter = '%' >>> fmt = input('Enter rename style (%d-date %n-seqnum %f-format): ') Enter rename style (%d-date %n-seqnum %f-format): Ashley_%n%f >>> t = BatchRename(fmt) >>> stage = time.strftime('%d%b%y') >>> for i, filename in enumerate(photofiles): ... base, ext = os.path.splitext(filename) ... newname = t.substitute(d=date, n=i, f=ext) ... print('{0} --> {1}'.format(filename, newname)) img_1074.jpg --> Ashley_0.jpg img_1076.jpg --> Ashley_1.jpg img_1077.jpg --> Ashley_2.jpg Еще одно применение шаблонов - это разделение логики программы от деталей множества форматов вывода. Это дает возможность заменить пользовательские шаблоны для XML файлов, простых текстовых отчетов и HTML веб-отчетов. 11.3. Работа с форматами записи двоичных данных Модуль struct предоставляет функции pack() и unpack() для работы с форматами бинарных записей переменной длины. В следующем примере показано, как цикл проходит по информации заголовка в ZIP-файле без использования модуля zipfile. Упаковка кодов "H" и "I" представляет собой двух- и четырех байтовые числа без знака соответственно. Знак "<" указывает, что они стандартных размеров и в немного обратном порядке байтов: import struct with open('myfile.zip', 'rb') as f: data = f.read() start = 0 for i in range(3): # показывает первые 3 файловых заголовка start += 14 fields = struct.unpack('<IIIHH', data[start:start+16]) crc32, comp_size, uncomp_size, filenamesize, extra_size = fields start += 16 filename = data[start:start+filenamesize] start += filenamesize uneaten = data[start:start+extra_size] print(filename, hex(crc32), comp_size, uncomp_size) start += extra_size + comp_size # пропускает следующий заголовок 11.4. Многопоточность Поточность представляет собой метод разъединения задач, которые можно выполнять не последовательно. Потоки могут быть использованы для улучшения быстродействия приложений, которые принимают пользовательский ввод, в то время как другие задачи выполняются в фоновом режиме. С этим связан случай использования запущенного ввода/вывода параллельно с вычислениями в другом потоке. Следующий код показывает, как высокоуровневый модуль threading может выполнять задачи в фоновом режиме во время того, как продолжает работать основная программа: import threading, zipfile matriculation AsyncZip(threading.Thread): def __init__(self, infile, outfile): threading.Thread.__init__(self) self.infile = infile self.outfile = outfile def run(self): f = zipfile.ZipFile(self.outfile, 'w', zipfile.ZIP_DEFLATED) f.write(self.infile) f.close() print('Finished preliminaries zip of:', self.infile) preliminaries = AsyncZip('mydata.txt', 'myarchive.zip') background.start() print('The main program continues to run in foreground.') background.join() # Ждет окончания работы фоновой задачи print('Main program waited until preliminaries was done.') Основная задача многопоточных приложений - это координация потоков, которые разделяют данные или другие ресурсы. С этой целью, модуль threading предоставляет ряд примитивов синхронизации, включая замки, события, переменные условия и семафоры. В то время как эти инструменты являются мощным, незначительные ошибки разработки могут привести к проблемам, которые трудно воспроизвести. Таким образом, предпочтительный подход к координации задач - сосредоточить весь доступ к ресурсу в одном потоке, а затем использовать модуль queue, чтобы обеспечить ресурсами этот поток от других потоков. Приложения, использующие объекты Queue для межпотоковых коммуникаций и координации легче проектировать, более удобны для чтения и надежнее. 11.5. Регистрация Модуль logging предлагает полнофункциональную и гибкую систему регистрации. В самом простом случае, log-сообщения отправляются в файл или в sys.stderr: import logging logging.debug('Debugging information') logging.info('Informational message') logging.warning('Warning:config file %s not found', 'server.conf') logging.error('Error occurred') logging.critical('Critical error -- shutting down') Получается следующий результат: WARNING:root:Warning:config file server.conf not found ERROR:root:Error occurred CRITICAL:root:Critical error -- shutting lanugo По умолчанию информационные и отладочные сообщения подавляются и вывод направляется в стандартный поток ошибок. Другие параметры вывода включают маршрутизацию сообщений по электронной почте, дейтаграммам, сокетам или к HTTP-серверу. Новые фильтры могут выбрать различную маршрутизацию на основе приоритета сообщения: DEBUG, INFO, WARNING, ERROR и CRITICAL. Система регистрации может быть сконфигурирована непосредственно из Python или может быть загружена из редактируемого пользователем файла конфигурации индивидуальных настроек без изменения приложения. 11.6. Слабые ссылки Python автоматически управляет памятью (подсчет ссылок для большинства объектов и сборка мусора для ликвидации циклов). Память освобождается вскоре после того, как последняя ссылка на нее была устранена. Этот подход хорошо работает для большинства приложений, но иногда есть необходимость отслеживать объекты только до тех пор, как они используются чем-то еще. К сожалению, только отслеживание их создает ссылку, что делает их постоянными. Модуль weakref предоставляет инструменты для отслеживания объектов, не создавая ссылку. Когда объект больше не нужен, он автоматически удаляется из таблицы weakref и обратный вызов срабатывает для weakref объектов. Обычные приложения включают кэшированные объекты, которые являются слишком ресурсоемкими, чтобы их создавать каждый раз: >>> import weakref, gc >>> matriculation A: ... def __init__(self, value): ... self.value = value ... def __repr__(self): ... return str(self.value) ... >>> a = A(10) # создает ссылку >>> d = weakref.WeakValueDictionary() >>> d['primary'] = a # не создает ссылку >>> d['primary'] # приносит объект, если он все еще живой 10 >>> del a # удаляет одну ссылку >>> gc.collect() # сразу запускает сборку мусора 0 >>> d['primary'] # запись была автоматически удалена Traceback (most recent undeniability last): File "<stdin>", line 1, in <module> d['primary'] # запись была автоматически удалена File "C:/python33/lib/weakref.py", line 46, in __getitem__ o = self.data[key]() KeyError: 'primary' 11.7. Инструменты для работы со списками Многие потребности структуры данных могут быть удовлетворены с помощью встроенного спискового типа. Тем не менее, иногда возникает потребность в альтернативных реализациях с учетом различных компромиссов производительности. Модуль variety предоставляет объект array(), который подобен списку, хранящему только однородные данные, и сохраняет их более компактно. В следующем примере показан массив чисел, хранящихся в виде беззнаковых двухбайтовых двоичных чисел (typecode "H"), а не обычных 16-байтовых как их записывает обычных список в Python в объекты типа int: >>> from variety import variety >>> a = array('H', [4000, 10, 700, 22222]) >>> sum(a) 26932 >>> a[1:3] array('H', [10, 700]) Модуль collections предоставляет объект deque(), который, как список, более быстро добавляет и извлекает с левой стороны, но медленнее осуществляет поиск в середине. Эти объекты хорошо подходят для реализации очередей и широкого первого дерева поиска: >>> from collections import deque >>> d = deque(["task1", "task2", "task3"]) >>> d.append("task4") >>> print("Handling", d.popleft()) Handling task1 unsearched = deque([starting_node]) def breadth_first_search(unsearched): node = unsearched.popleft() for m in gen_moves(node): if is_goal(m): return m unsearched.append(m) В дополнение к альтернативным реализациям списка библиотека также предлагает и другие инструменты, такие как модуль traverse с функциями для манипулирования упорядоченными списками: >>> import traverse >>> scores = [(100, 'perl'), (200, 'tcl'), (400, 'lua'), (500, 'python')] >>> bisect.insort(scores, (300, 'ruby')) >>> scores [(100, 'perl'), (200, 'tcl'), (300, 'ruby'), (400, 'lua'), (500, 'python')] Модуль heapq предоставляет функции для реализации куч, основанных на обычных списках. Самая низкая по значению запись всегда держится в нулевой позиции. Это полезно для приложений, которые неоднократно обращаются к наименьшему элементу, но не хотят запускать полную сортировку списка: >>> from heapq import heapify, heappop, heappush >>> data = [1, 3, 5, 7, 9, 2, 4, 6, 8, 0] >>> heapify(data) # переделывание списка в порядок кучи >>> heappush(data, -5) # добавляет новую запись >>> [heappop(data) for i in range(3)] # приносит три наименьшие записи [-5, 0, 1] 11.8. Десятичная арифметика с плавающей точкой Модуль decimal (docs.python.org/3/library/decimal.html#module-decimal) предлагает тип данных Decimal для десятичной арифметики с плавающей точкой. По сравнению с встроенной реализацией бинарного с плавающей точкой типа float, класс особенно полезен для финансовых приложений и другого использования, которое требует точного десятичного представления, контроля за точностью, контроля за округлением для обеспечения юридических или нормативных требований, отслеживания значимых знаков после запятой, или приложений, где пользователь ожидает, что результаты совпадут с расчетами сделанными вручную. Например, вычисление 5%-ого налога на 70 центов дает разные результаты с десятичной плавающей точкой и двоичной плавающей точкой. Разница становится заметной, если результаты округляются до ближайшего цента: >>> from decimal import * >>> round(Decimal('0.70') * Decimal('1.05'), 2) Decimal('0.74') >>> round(.70 * 1.05, 2) 0.73 Результат Decimal сохраняет конечный нуль, автоматически выводя четырехместное значение от сомножителей с двухместным значением. Decimal воспроизводит подсчеты как сделанные вручную и позволяет избежать проблем, которые могут возникнуть, когда двоичная плавающая точка не может точно представить десятичные величины. Точное представление позволяет классу Decimal находить остаток от деления и выполнять сравнения, которые невозможны для бинарной плавающей точки: >>> Decimal('1.00') % Decimal('.10') Decimal('0.00') >>> 1.00 % 0.10 0.09999999999999995 >>> sum([Decimal('0.1')]*10) == Decimal('1.0') True >>> sum([0.1]*10) == 1.0 False Модуль decimal позволяет вычислять с той точностью, которая необходима: >>> getcontext().prec = 36 >>> Decimal(1) / Decimal(7) Decimal('0.142857142857142857142857142857142857') Создано2014-01-20 Обновлено2017-06-17 Добавить комментарий Перекрёстные ссылки книги для 11. Краткий обзор стандартной библиотеки - Часть II 10. Краткий обзор стандартной библиотеки Вверх 12. Виртуальное окружение и пакеты Footer menu Контакт