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

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

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

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

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

more ...

Полезные инструменты: virtualenv + pip

Опыт показывает, что каждый проект обладает своими зависимостями (библиотеками), а если и одинаковыми, то версии не совпадают. Чтобы упростить запуск и настройку проекта разработчики пишут INSTALL.md, README.md, make-файлы и что более важно - requirements.txt.

Файл requirements.txt - это правило хорошего тона для Python проектов. Файл содержит список необходимых библиотек для запуска с указанием версий:

# requrements.txt
requests==2 ...
more ...

Пишем web-проекты: исправляем битый HTML с помощью Tidy

При парсинге возникают совсем странные ошибки - одна из них - не валидный HTML. Т.е. с ошибками. Верстальщик забыл закрыть таблицу или body. Еще бывает что вставляют HTML из Word, а там тааккккооооой код.

Чтобы очистить HTML от мусора можно применять инструмент Tidy.

Данный инструмент позволяет исправить неверный HTML (добавит закрывающие теги, добавит недостающие теги), почистить форматирование (отступы, например).

Скачать этот ...

more ...

Практические задачи: Задача #003 - система генерации описаний

Продолжаем предлагать различные задачи для практики. Кто заинтересуется решением этих задач, просим помогать друг-другу. Но при этом в течении недели не кидать ссылок на полностью готовое решение. А также, чтобы читать код было удобно - публикуйте его на https://gist.github.com/ или какой-то подобный сервис.

Описание задачи:

Запускается новый интернет-магазин, который будет заниматься продажей одежды. Поставщики товаров предоставили характеристики. Но ...

more ...

Синтаксис Python: __slots__

Python обладает широкими динамическими возможностями. Строгая динамическая неявная типизация позволяет не указывать типы, но при этом не бояться что в коде просуммируем строку и число. Однако за динамичность приходиться платить - памятью и скоростью.

Но что если хочется максимально уменьшить размер объектов (а в python все объекты) и при этом не потерять в функциональности? Для примера возьмем плоскость. На плоскости, пускай ...

more ...

Синтаксис Python: all и any

Коротко: all и any - встроенные методы, которые позволяют проверять все элементов списка на выполнение условия.

При валидации данных часто возникает задача проверить структуру на корректность. Например, пускай есть список словарей:

data = 
[
    {
        'title': "Super page",
        'description': "Super puper page",
        'id': 'page_super',
        'data': {}
    },
    {
        'title': "Super super page",
        'description': "Super puper page2",
        'id': 'page_super_super',
        'data': {}
    },
]

И надо проверить что во всех внутренних словарях ...

more ...

Полезные инструменты: clonedigger - поиск дубликатов кода

Количество кода - это некоторый критерий для ПО. Практика показывает, что чем больше кода - тем сложнее поддерживать и развивать продукт. А если в этом коде много copy-past'ы, то совсем плохо.

Для выявления повторяющихся кусков кода существуют различные инструменты. Один из них CloneDigger. Это старая разработка (еще в 2008 году автор выступал на EuroPython), однако, работает хорошо и на данный момент ...

more ...


Учебные материалы: курс "Автоматизация скучных вещей на Python"

Automate the Boring Stuff with Python ( https://automatetheboringstuff.com/ )- это англоязычный курс об использовании Python на практике. Курс обширный, покрывает множество частей Python. Изложение не скучное, а скорее игривое и практичное. Здесь нет ситуаций, когда 50 страниц читаешь про всестороннее использование списков, как у Лутца. Здесь практика.

Курс стоит денег, однако по ссылке скидка 50% (смог найти такой промокод)

more ...

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

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

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

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

more ...