Стандартная библиотека Python

We use cookies. Read the Privacy and Cookie Policy

Стандартная библиотека Python представляет собой набор модулей, включаемых в каждую установленную копию Python. Сейчас вы уже примерно понимаете, как работают классы, и можете начать использовать модули, написанные другими программистами. Чтобы использовать любую функцию или класс из стандартной библиотеки, достаточно включить простую команду import в начало файла. Для примера рассмотрим класс OrderedDict из модуля collections.

Как вы уже знаете, словари позволяют связывать информационные фрагменты, но они не отслеживают порядок добавления пар «ключ—значение». Если вы хотите создать словарь, но при этом сохранить порядок добавления пар «ключ—значение», воспользуйтесь классом OrderedDict из модуля collections. Экземпляры класса OrderedDict ведут себя практически так же, как и словари, если не считать того, что они отслеживают порядок добавления пар «ключ—значение».

Вернемся к примеру favorite_languages.py из главы 6. На этот раз программа будет отслеживать порядок, в котором участники отвечают на опрос:

favorite_languages.py

(1) from collections import OrderedDict

(2)favorite_languages = OrderedDict()

(3)favorite_languages['jen'] = 'python'

favorite_languages['sarah'] = 'c'

favorite_languages['edward'] = 'ruby'

favorite_languages['phil'] = 'python'

(4)for name, language in favorite_languages.items():

. .print(name.title() + "'s favorite language is " +

. . . .language.title() + ".")

Сначала программа импортирует класс OrderedDict из модуля collections в точке (1) . В точке (2) создается экземпляр класса OrderedDict, который сохраняется в favorite_languages. Обратите внимание на отсутствие фигурных скобок; вызов OrderedDict() создает пустой упорядоченный словарь и сохраняет его в favorite_languages. Затем пары из имени и языка последовательно добавляются в словарь (3). Теперь при переборе favorite_languages в точке (4) данные всегда будут выдаваться в порядке их добавления:

Jen's favorite language is Python.

Sarah's favorite language is C.

Edward's favorite language is Ruby.

Phil's favorite language is Python.

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

примечание

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

Упражнения

9-13. Переработка с OrderedDict Rewrite: начните с упражнения 6-4 (с. 113), в котором стандартный словарь используется для представления глоссария. Перепишите программу с использованием класса OrderedDict и убедитесь в том, что порядок вывода совпадает с порядком добавления пар «ключ—значение» в словарь.

9-14. Кубики: модуль random содержит функции для генерирования случайных чисел разными способами. Функция randint() возвращает целое число в заданном диапазоне. Следующий код возвращает число от 1 до 6:

from random import randint

x = randint(1, 6)

Создайте класс Die с одним атрибутом с именем sides, который содержит значение по умолчанию 6. Напишите метод roll_die() для вывода случайного числа от 1 до количества сторон кубика. Создайте экземпляр, моделирующий 6-гранный кубик, и имитируйте 10 бросков.

Создайте модели 10- и 20-гранного кубика. Имитируйте 10 бросков каждого кубика.

9-15. Модуль недели: для знакомства со стандартной библиотекой Python отлично подойдет сайт Python Module of the Week. Откройте сайт http://pymotw.com/ и просмотрите оглавление. Найдите модуль, который покажется вам интересным, и прочитайте про него или изучите документацию по модулям collections и random.