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

Статический анализ кода — анализ кода без реального исполнения кода. Под словом "анализ" можно понимать многое - что код соответствует PEP8, что код безопасный (все типы верно приведены), что код не содержит логических ошибок.

Самым придирчивым анализатором является pylint.

Pylint анализирует исходный код, выводит небольшую статистику по нему и делает около 150 проверок на разного рода ошибки. Все найденные ошибки выводятся в ...

more ...

Полезные библиотеки: langid.py

Представим ситуацию: есть блог, в котором публикуются посты на двух языках (а может и на 10). Необходимо рассортировать посты по языкам в разные RSS. (постов очень много, пускай 1000)

Вопрос к аудитории - как вы решили бы такую задачу?

Чтобы решить подобную задачу можно воспользоваться библиотекой langid.py. Это небольшой инструмент, который без доступа в Интернет(!!!) может определить язык текста (и ...

more ...

Анонс встречи №3 сообщества PyNSK

Image

Встреча сообщества PyNSK состоится 11 октября (воскресенье) в 13 часов, в Самоваре (http://go.2gis.com/b20p) Регистрация на встречу по ссылке - http://bit.ly/pynsk3_reg

На встрече вас ожидает море общения и два доклада:

Юра Бабуров aka buriy расскажет доклад "Получаем текст веб-страниц из Python и как это работает"

Описание: Мы рассмотрим python-библиотеку под названием readability-lxml (https://github.com ...

more ...

Синтаксис Python: frozenset - морозное множество

frozenset и set, это как кортеж (tuple) и список. Первые являются неизменяемыми, вторые изменяемые.

Иммутабельные(неизменяемые) структуры данных - это коллекции, которые нельзя изменить. Примерно как числа. Число просто есть, его нельзя поменять. Также и иммутабельный массив — он такой, каким его создали, и всегда таким будет. Если нужно добавить элемент — придется создать новый массив.

Преимущества неизменяемых структур:

  • Безопасно разделять ссылку между ...
more ...

Таинство стандартной библиотеки: мета-классы, что это и зачем

В Python все является объектом. Даже класс. Не объект класса, а сам класс.

>>> ().__class__
<type 'tuple'>
>>> ().__class__.__class__
<type 'type'>

Если из класса (считай "шаблон") мы создает объекты ("по шаблону делаем экземпляры"), то что делать как назвать ситуацию, когда кто-то делает классы? Стоит сказать зачем это может быть нужно:

  • изменять типы создаваемых классов.
  • Например, подмешивать миксины(примиси)
  • автоматически вызывать некоторый ...
more ...


Опыт разработчиков: соглашения о кодировании

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

Для разработчика важным является соглашение о кодировании. Это своего рода свод "законов", которые принимает новый разработчик, когда погружается в проект. Чаще всего такие законы очевидны и естественны.

Возьмем пример - длина строки не более 79 символов. В свое время дисплеи содержали ...

more ...

Синтаксис Python: dir()

Достался нам в наследство какой-то код. А там непонятный объект с названием super_object_1. Как понять что это за объект?

На помощь приходят встроенные функции - type(), dir(). Если с type() все ясно - возвращает тип, то с dir не совсем.

dir - Возвращает имена переменных, доступные в локальной области, либо атрибуты указанного объекта в алфавитном порядке. Это значит, что при вызове кода:

dir ...
more ...

Функциональный Python: fn.py

Функциональные аспекты, такие как чистота, иммутабельные данные весьма жизнеспособны. Какие-то из них Python хорошо поддерживает, какие-то нет (например, рекурсия). Сегодня хочется упомянуть библиотеку fn.py. Эта библиотека добавляет синтаксический сахар в виде scala-лямбд, персистентных структур данных, стримом, а также другие элементы, которые встречаются в ФП.

Рассказ о библиотеке:

Исходники библиотеки:

more ...

Извлечение информации: grab - фреймворк для веб-парсинга

Grab — python библиотека для парсинга сайтов

Её основные функции:

  • Подготовка сетевого запроса (cookies, http-заголовки, POST/GET данные)
  • Запрос на сервер (возможно через HTTP/SOCKS прокси)
  • Получение ответа сервера и его первоначальная обработка (парсинг заголовков, парсинг cookies, определение кодировки документа, обработка редиректа (поддерживаются даже редирект в meta refresh тэге))
  • Работа с DOM-деревом ответа (если это HTML-документ)
  • Работа с формами (заполнение, автозаполнение ...
more ...