Запустите основную программу weather.py, чтобы увидеть, что произойдет:
$ python weather.py
Daily forecast: like yesterday
Weekly forecast:
1 snow
2 more snow
3 sleet
4 freezing rain
5 rain
6 fog
7 hail
Стандартная библиотека Python
Одно из основных преимуществ Python заключается в том, что у него есть соб-
ственный «запас мощности» — большая стандартная библиотека модулей, кото-
рые выполняют множество полезных задач и располагаются отдельно друг от
друга, чтобы избежать разрастания ядра языка. Когда вы собираетесь писать код,
зачастую сначала стоит проверить, существует ли стандартный модуль, который
уже делает то, что вы хотите. Удивительно, как часто вы будете встречать эти
небольшие жемчужины в стандартной библиотеке. Python также предоставляет
авторитетную документацию для модулей наряду с руководством для пользо-
вателей (http://docs.python.org/3/library). Сайт Дага Хеллмана (Doug Hellmann)
Python Module of the Week (http://bit.ly/py-motw) и его книга The Python Standard
148
Глава 5. Py Boxes: модули, пакеты и программы
Library by Example («Стандартная библиотека Python в примерах»), выпущенная
издательством Addison-Wesley Professional, также являются очень полезными ру-
ководствами.
В следующих главах книги показано множество стандартных модулей, которые
предназначены для работы с Сетью, системами, базами данных и т. д. В этом раз-
деле я поговорю о стандартных модулях, которые имеют более общие варианты
использования.
Обработка отсутствующих ключей
с помощью функций setdefault()
и defaultdict()
Вы уже видели, что попытка получить доступ к словарю с помощью несуществу-
ющего ключа генерирует исключение. Использование функции словаря get() для
того, чтобы вернуть значение по умолчанию, помогает этого избежать.
Функция setdefault() похожа на функцию get(), но она также присваивает
элемент словарю, если заданный ключ отсутствует:
>>> periodic_table = {'Hydrogen': 1, 'Helium': 2}
>>> print(periodic_table)
{'Helium': 2, 'Hydrogen': 1}
Если ключа еще нет в словаре, будет использовано новое значение:
>>> carbon = periodic_table.setdefault('Carbon', 12)
>>> carbon
12
>>> periodic_table
{'Helium': 2, 'Carbon': 12, 'Hydrogen': 1}
Если мы пытаемся присвоить другое значение по умолчанию уже существу-