Таинство стандартной библиотеки: пути до файлов

Python прикладывает множество усилий чтобы скрыть все различия операционных систем. Если смотреть на файлы, а точнее на пути файлов, то легко можно заметить различия между Linux и Windows:

C:\Program Files (x86)
/home/user/documents

Слэши в разные стороны. Чтобы не концентрировать внимание на таких отличиях стоит использовать модуль os.path

os.path является вложенным модулем в модуль os, и ...

more ...

Таинство стандартной библиотеки: модуль __future__

Хорошей практикой является применение deprecated нотаций (помечать, что какой-то метод/функционал будет удален в такой-то версии) Можно пойти дальше и указывать какой функционал станет обязательным в следующих версиях.

Если с deprecated еще все более-менее ясно, то как заставить компилятор понимать функционал из будущих версий?

Для этого в Python есть модуль __future__. Этот небольшой по размеру модуль -> https://hg.python.org ...

more ...

Таинство стандартной библиотеки: консольный GUI с помощью curses

Python отлично подходит для написания самых различных серверных утилит. Часто такие утилиты дополняют CLI (Command Line Interface), а иногда и целым GUI.

Но как его сделать? На сервере часто нет X сервера. нет Qt и чего-то такого, а Python есть. Возможно вы слышали про ncurses - библиотека для управления IO. Вот ее и можно использовать для такой задачи - стандартная библиотека содержит ...

more ...

Таинство стандартной библиотеки: shelve - база данных для объектов

Модуль shelve из стандартной библиотекой можно описать одной фразой - "pickle + anydbm".

shelve позволяет сериализовать объект (прям как pickle), а потом сохранить его в виде похожем на БД (интерфейс anydbm).

>>> import shelve
>>> db = shelve.open(filename)
>>> db[key] = obj
>>> obj = db[key]
>>> db.close()

Как видно из небольшого примера, БД предоставляет интерфейс словаря. Это позволяет нам сохранять различные сериализуемые объекты под ...

more ...

Таинство стандартной библиотеки: asyncio в Python. Как устроено и зачем нужно?

Видео со свежего Moscow Python митапа.

В python 3.4 появился asyncio. До сих пор многие разработчики не знают, что это такое, как реализуется асинхронность в Python и в чем её сильные и слабые места. Повторим пройденное и заглянем под капот.

more ...

Таинство стандартной библиотеки: sys.platform - определяем операционную систему

При написании софта для кого-то, а не только для себя, необходимо учитывать специфику рабочего окружения.

Например, у разработчика стоит Linux, а у пользователя Windows. Или даже если у обоих стоит одна ОС, то на одном ПК может стоять необходимый модуль, а на другом нет. Все это накладывает отпечаток. Python со стандартной библиотекой предоставляет необходимый инструментарий для разрешения многих проблем.

Рассмотрим ...

more ...

Таинство стандартной библиотеки: timeit - измерим время работы!

Представим мы придумали алгоритм, на пальцах оценили его быстродействие, закодили и получили медленно работающий софт. Что делать? куда бежать? С чего стоит начать? Да сначала стоит измерить сколько ресурсов (память, время, проц) кушает ваш софт. Уже имея числа на руках можно думать дальше.

Для измерения временных затрат для вашего кода можно воспользоваться библиотекой timeit. А другие ресурсы измерим в след ...

more ...

Таинство стандартной библиотеки: zipimport - импортируем код из zip файлов

Еще в далеком Python 2.3 был добавлен модуль zipimport. Этот модуль упростил возможность импорта из zip файлов:

$ python
Python 2.3 (#1, Aug 1 2003, 19:54:32) 
>>> import sys
>>> sys.path.insert(0, '/tmp/example.zip')  # Add .zip file to front of path
>>> import jwzthreading
>>> jwzthreading.__file__
'/tmp/example.zip/jwzthreading.py'

(больше примеров по см. по первой ...

more ...

Таинство стандартной библиотеки: .pyi файлы - python stubs

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

Появился модуль typing, который в 3.5 есть по умолчанию, а начиная с 3.2 можно установить с PyPi Но что делать с кодом на 2.7? Хочется же больше ошибок ...

more ...

Таинство стандартной библиотеки: сериализуем данные с помощью marshal

Наверное, вы слышали про модуль Pickle, который умеет сериализовать объект в бинарный вид, который можно потом сохранить/загрузить в /из файл.

А модуль marshal сериализует объект в текстовый вид. Получив строку вы можете отправить ее другу по email, а уже из строки снова получить объект

Особенности модуля:

  • Данные сохраняются в платформонезависимом формате.
  • Поддерживаются только None, целые числа, длинные целые числа ...
more ...