Обновить
256K+

Python *

Высокоуровневый язык программирования

368,78
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности
Формат публикации

Простой интерпретатор с нуля на Python #2

Время на прочтение8 мин
Охват и читатели18K


В предыдущей статье мы рассматривали сам язык IMP и основную структуру интерпретатора. Также, мы тщательно рассмотрели лексер. В этой статье мы будем писать небольшой парсер для нашего языка. Он будет извлекать AST (abstract syntax tree) из списка токенов, сгенерированных лексером. Библиотека комбинатора будет независимая, то есть с помощью нее можно будет написать парсер для любого языка.


Что такое комбинаторы парсеров?

Есть очень много способов написать парсер. Самым простым и быстрым способом сделать это являются комбинаторы.

Вы можете считать парсер функцией, которая принимает поток токенов. Если успешно, то парсер будет «съедать» немного токенов из потока. Функция вернет часть финального AST вместе с остальными токенами. Комбинатор — это функция, которая производит парсер, как его результат, обычно после приема одного или нескольких анализаторов (парсеров) в качестве входных данных, отсюда и название — «комбинатор». Вы можете использовать комбинаторы для создания законченного парсера для языка, как IMP, путем создания множества маленьких парсеров для каждой части языка.
Читать дальше →

Peewee – лёгкая, гибкая и очень быстрая ORM на Python

Время на прочтение5 мин
Охват и читатели130K
image

Предлагаю всем джангистам/алхимистам немного отвечься и почитать вольную интерпретацию вводного туториала и частично документации по Peewee – stand-alone ORM, обязательной к ознакомлению любому питонщику и, в особенности, фласкеру. Пишут о ней мало, а зря. С Peewee очень просто подружиться, особенно если вы уже знакомы с какой-нибудь ORM на ActiveRecord. Что более важно – с ней приятно дружить :) Ну, начнём.


Установка
С pip:
pip install peewee


Из репозитория:
git clone https://github.com/coleifer/peewee.git cd peewee python setup.py install


Тесты:
python setup.py test


Есть обвязка для flask:
pip install flask-peewee



Определение моделей или «попахивает джангой»


Весь нижеследующий код можно повторить один к одному в интерактивном интерпретаторе или отдельном скрипте.

from peewee import *

db = SqliteDatabase('people.db')

class Person(Model):
    name = CharField()
    birthday = DateField()
    is_relative = BooleanField()

    class Meta:
        database = db  # модель будет использовать базу данных 'people.db'


Типов полей много, на все случаи жизни. Peewee берёт на себя преобразование питоновских объектов в значения, подходящие для базы данных, и наоборот.
Читать дальше →

Анализ временных рядов с помощью python

Время на прочтение8 мин
Охват и читатели204K
Добрый день, уважаемые читатели.
В сегодняшней статье, я попытаюсь описать процесс анализа временных рядов с помощью python и модуля statsmodels. Данный модуль предоставляет широкий набор средств и методов для проведения статистического анализа и эконометрики. Я попытаюсь показать основные этапы анализа таких рядов, в заключении мы построим модель ARIMA.
Для примера взяты реальные данные по товарообороту одного из складских комплексов Подмосковья.
Читать дальше →

Интерпретатор Python: о чём думает змея? (часть I-III)

Время на прочтение6 мин
Охват и читатели56K
image

От переводчика
Весьма вольный перевод серии из трёх статей об устройстве питоновского интерпретатора. Автор занимается разработкой собственного велосипеда по этой теме и решил поделиться знаниями, появившимися в процессе. Посмотрим, что у него из этого получилось.


Данная серия статей рассчитана на тех, кто умеет писать на python в целом, но плохо представляет как этот язык устроен изнутри. Собственно, как и я три месяца назад.

Небольшой дисклеймер: свой рассказ я буду вести на примере интерпретатора python 2.7. Всё, о чем пойдёт речь далее, можно повторить и на python 3.x с поправкой на некоторые различия в синтаксисе и именование некоторых функций.

Итак, начнём.
Читать дальше →

Python на Хабре

Время на прочтение7 мин
Охват и читатели457K
Некоторое время назад, в силу определенных причин, мне пришла в голову мысль о том, чтобы начать изучать какой-нибудь новый язык программирования. В качестве альтернатив для этого начинания я определил два языка: Java и Python. После продолжительного метания между ними и сопутствующих нытья и долбежки головой о стену (у меня с новыми языками всегда так — сомнения, раздумья, проблема выбора и т.д.), я все-таки остановился на Python. Окей, выбор сделан. Что дальше? А дальше я стал искать материал для изучения…
Читать дальше →

Python Meetup: ноябрьская встреча

Время на прочтение2 мин
Охват и читатели9.3K
image

В конце ноября в Минске прошла очередная встреча Python Meetup. Четыре интереснейших доклада на около-python-овские темы, авторитетные спикеры. Кстати, впервые к нам приехал спикер не из Беларуси — это был Андрей Власовских, опытный докладчик из компании JetBrains.

В ноябрьском митапе мы рассмотрели опциональную типизацию в Python, асинхронное распределенное выполнение задач, введение в GIL и новый GIL, а также использование gevent для эмуляции высокой нагрузки.
Видео всех докладов, как и ссылки на презентации, можно найти под катом.
Читать дальше →

Простой интерпретатор с нуля на Python (перевод) #1

Время на прочтение5 мин
Охват и читатели54K


Вещь, которая привлекла меня изучать компьютерную науку была компилятором. Я думал, что это все магия, как они могут читать даже мой плохо написанный код и компилировать его. Когда я прошел курс компиляторов, я стал находить этот процесс очень простым и понятным.


В этом цикле статей я попытаюсь захватить часть этой простоты путем написания простого интерпретатора для обычного императивного языка IMP (IMperative Language). Интерпретатор будет написан на Питоне, потому что это простой и широко известный язык. Также, питон-код похож на псевдокод, и даже если вы не знаете его [питон], у вас получится понять код. Парсинг будет выполнен с помощью простого набора комбинаторов, написанных с нуля (подробнее расскажу в следующей части). Никаких дополнительных библиотек не будет использовано, кроме sys (для I/O), re (регулярные выражения в лексере) и unittest (для проверки работоспособности нашей поделки).
Читать дальше →

Пример решения задачи множественной регрессии с помощью Python

Время на прочтение6 мин
Охват и читатели140K

Введение


Добрый день, уважаемые читатели.
В прошлых статьях, на практических примерах, мной были показаны способы решения задач классификации (задача кредитного скоринга) и основ анализа текстовой информации (задача о паспортах). Сегодня же мне бы хотелось коснуться другого класса задач, а именно восстановления регрессии. Задачи данного класса, как правило, используются при прогнозировании.
Для примера решения задачи прогнозирования, я взял набор данных Energy efficiency из крупнейшего репозитория UCI. В качестве инструментов по традиции будем использовать Python c аналитическими пакетами pandas и scikit-learn.
Читать дальше →

Почему я ненавижу virtualenv и pip

Время на прочтение9 мин
Охват и читатели104K
Я не разделяю всеобщей любви к virtualenv (далее — venv) и pip. Я считаю, что они лишь вносят неразбериху и более того — вредят. Python-программисты чаще всего не соглашаются со мной, да и venv+pip де-факто считается стандартом в python-сообществе. Так как я понимаю, насколько голословными звучат мои высказывания, решил написать сей трактат. Конечно, я иногда пускаюсь спорить на эту тему и в реальной жизни: и ну нравится мне заводить людей и наблюдать, как страстно они остаивают свою позицию. Но при этом мне всегда кажется, что словесно я не могу обосновать свою позицию в полной мере. Поэтому вместо того, чтобы постоянно пытаться вербально доказывать свою точку зрения, я решил написать эту статью, дабы потом просто показывать её людям. Может быть тогда некоторые со мной согласятся, потому что сейчас не согласен почти никто. А может наоборот, как только мои доводы будут всецело поняты, найдутся те, кто их аргументированно опровергнет. Так или иначе, я буду рад любому варианту развития событий.
Читать дальше →

ВКонтакте без джаббера и снова с ним

Время на прочтение4 мин
Охват и читатели55K
Это история про то, как пользоваться чатом ВКонтакте в том мессенджере, который вам нравится.
Пусть этой новости уже несколько месяцев, однако не всегда хорошие новости вовремя получают должное внимание.
В середине статьи — мануал для админов джаббер-серверов, в конце — обращение к питонистам.
Ссылки на пруфпики инклюдед.


Как известно, в начале сентября ВКонтакте закончил поддерживать XMPP для доступа к личным сообщениям. Джаббер-сообщество негодовало [pic] и решило этот вопрос иначе.

Картинка про Jabber и ВКонтакте от Павла Дурова:

Читать дальше →

Continuous Integration вместе с buildbot: а зачем?

Время на прочтение2 мин
Охват и читатели10K

В прошлом посте я хотел познакомить хабражителей с buildbot'ом. Но тема была мной раскрыта не до конца.
Сегодня я постараюсь немного наверстать упущенное.
Читать дальше →

Python для микроконтроллеров

Время на прочтение1 мин
Охват и читатели68K

На Kickstarter через два дня заканчивается сбор средств на проект по созданию Arduino-подобной платы и специальной версии интерпретатора Python для нее.
Читать дальше →

Ближайшие события

Профилирование и отладка Python, отладка

Время на прочтение7 мин
Охват и читатели121K
В предыдущей статье мы закончили разговор о профилировании обзором событийных профайлеров.

Сегодня я предлагаю рассмотреть методы отладки программ.

Начнём!

Введение в анализ текстовой информации с помощью Python и методов машинного обучения

Время на прочтение9 мин
Охват и читатели67K

Введение


Сегодня я продолжу рассказ о применении методов анализа данных и машинного обучения на практических примерах. В прошлой статье мы с вами разбирались с задачей кредитного скоринга. Ниже я попытаюсь продемонстрировать решение другой задачи с того же турнира, а именно «Задачи о паспортах» (Задание №2).
При решении будут показаны основы анализа текстовой информации, а также ее кодирование для построения модели с помощью Python и модулей для анализа данных (pandas, scikit-learn, pymorphy).
Читать дальше →

Flightstats API: Пишем свое табло прилетов с Боингами и Аэробусами

Время на прочтение16 мин
Охват и читатели39K

Введение


Всем читающим этот пост — здравствуйте.
Авиация — мое хобби, я об этом уже писал. Я готов часами стоять и фотографировать самолеты, смотреть видео о них, читать блоги летчиков, следить за трафиком на fr24.com. А еще мне нравится то, что в авиации кругом одни сокращения: ECAM, CDA, ACESS, APU и так далее. Вообщем, магия. А вот почти все люди из моего окружения к авиации равнодушны: «Ну самолет, как самолет. Большой, да. Что? Boeing 777-300ER? Ну ясно, ясно...». Но ничего не поделаешь, на вкус и цвет все фломастеры разные.
Как ко мне пришла идея поста? Так получилось, что я живу в 20 минутах езды от аэропорта Шереметьево. Как-то у меня выдался свободный час и приехал немного пофотографировать. За то время, пока я там был, мимо меня пролетело около 10 самолетов. Почти все — Аэрофлот. Я не спорю, у Аэрофлота есть интересные борты. Например, Добролет или Хохлома. Но в тот день мне не повезло, ничего подобного я не увидел. И тогда я подумал, что было бы очень полезно планировать подобные выезды. Вот так вот и родилась идея поста. Мне хотелось иметь следующий функционал: таблица вылетов — прилетов для выбранного аэропорта, выделение цветом как интересных, так и не очень ботов, экспорт в pdf.

Начинаем!

Читать дальше →

PyFence: верификация типов для Python

Время на прочтение2 мин
Охват и читатели7.1K


PyFence — самопальная утилита-библиотека, которая позволяет следить за соответствием типов во время отладки вашего проекта. PyFence берет информацию о типах из docstring'ов функций в стандартном формате Sphinx. То есть, если у вас уже есть документация, больше ничего делать для использования PyFence не нужно!

Например, возьмем следующий класс:
Читать дальше →

Облачные ci: travis-ci и drone.io

Время на прочтение2 мин
Охват и читатели6.1K

Всегда приятно иметь статистику о состоянии технической части (кода) проекта, этим занимается coviolations.io. Но для его использования нужно какое-то ci-решение. Не каждому захочется поднимать jenkins/travis/etc на своём сервере, а будет проще прибегнуть к использованию облачных сервисов. Мы рассмотрим два наиболее популярных: travis-ci и drone.io.

Как «жертву» будем использовать обычный django проект — сам coviolations. Для проектов на ror/nodejs/flask/etc всё будет почти аналогично. Как результат мы получим пачку статистики и графиков.
Читать дальше →

Рейтинг постов хаба

Время на прочтение35 мин
Охват и читатели56K

Привет, Хабр!

Решил посмотреть лучшие посты своего любимого хаба и с ужасом обнаружил, что такой фичи нет.

В связи с тем, что данная возможность появилась, а топик сносить в черновики не хочется — ниже рейтинг самых комментируемых и добавляемых в избранное статей самых популярных хабов. Кроме того пару слов о реализации скрипта.

Читать дальше →

Continuous Integration вместе с buildbot: введение

Время на прочтение2 мин
Охват и читатели15K

Любой проект за годы разработки обрастает большой и сложной инфраструктурой. Множество скриптов сборки, хуков и самописных утилиток со временем превращаются в целый ворох проблем. Этого сложно избежать полностью, но вполне реально сократить количество возможных неприятностей. Об одном инструменте, который может Вам в этом помочь, я сегодня и расскажу.
Читать дальше →