Интересные концепции: REPL (Read-eval-print loop)

REPL (Read-eval-print loop) — простая интерактивная среда программирования.

В такой среде пользователь может вводить выражения, которые среда тут же будет вычислять, а результат вычисления отображать пользователю. Название read-eval-print loop происходит от имён примитивов языка Lisp, которые реализуют подобную функциональность

Зачем нужен REPL? Очевидно что REPL нужен для обучения, проверки каких-то идей/кода, чтобы вспомнить как работает какой-то метод, для замены калькулятора, иными словаи когда цикл "Написал код -> запустил -> посмотрел результат" должен быть минимальным по времени.

Учебные материалы: A Byte of Python - отличная книга для начала

Image

“A Byte of Python” – это свободная книга по программированию на языке Python. Она может служить учебным пособием или руководством по языку Python для начинающей аудитории. Если ваши знания о компьютере ограничиваются тем, как сохранять текстовые файлы, эта книга для вас.

Книга короткая - 150 страниц и рассказывает самые-самые важные аспекты для начала.

Python для ARM. Мигание светодиода. Часть 1

В продолжение статьи про одноплатные компьютеры мы приступим к их рассмотрению и работы с ними более детально (примеры будут показаны на платах Raspberry Pi (RPi), OrangePi и PcDuino). Начнем с управления светодиодом. В этом и дальнейших материалах будут использоваться за основу давно существующие материалы и будут использованы для создания наших проектов.

Начнем мы с управления светодиодом. Будут представлены несколько методов управления и возможные варианты в дальнейших ваших разработках.

httpbin - инструмент для тестирования HTTP библиотек и кусков кода

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

  • Как происходит обработки 404-ошибки.
  • Если это чат - то как отображаются картинки, текст
  • Как происходит обработка различных кодировок
  • Если прокси, то как убедиться в анонимности прокси-сервера(т.е. http-заголовок не содержит вашего реального IP)

Общее в этих примерах механизм - из своего кода вы посылаете запрос и ожидаете четкий ответ. Если чат и ожидаете картинку - то в ответе должно быть изображение.

И к счастью, реализация подобного механизма уже есть - httpbin.

Пишем простые проекты. Проект #1. Часть #2

Продолжаем писать проект "Страница со статистикой отжимания" с помощью flask + google chart's.

В этой части дополним шаблон javascript'ом, продумаем и реализуем сохранение/загрузки истории.

Ранее создан базовый проект flask и html файл с текстом Hiiii.

Python уроки: исключения (exceptions)

В этом уроке вы узнаете о важном средстве языка, без которого крупная программа не может обойтись. Речь пойдет об исключениях. Что это такое, как ими пользоваться и как создавать собственные?

Исключительные ситуации или исключения(exceptions) - это ошибки, обнаруженные при исполнении. Например, к чему приведет попытка чтения несуществующего файла? Или если файл был случайно удален пока программа работала? Такие ситуации обрабатываются при помощи исключений.

Если же Python не может понять, как обойти сложившуюся ситуацию, то ему не остается ничего кроме как поднять руки и сообщить, что обнаружил ошибку.

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

memoryviews - меньше копирований объектов

В Python есть несколько типов для работы с бинарными данными - byte, bytearray, memoryview

Memoryview объекты (согласно документации) позволяют Python-коду(а не C_API) обращаться к внутренним данным объекта, который поддерживает protocol buffer. И работать с этими данными без копирования.

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

django-ipware - определяем IP пользователя

Наверное, вы сталкивались с письмами от google, с содержанием аля "В ваш аккаунт зашли с IP-адреса <такого-то>, что делать?". Чтобы реализовать такую логику необходимо записывать историю входов и ip-адрес.

Для django есть небольшой модуль - django-ipware, который самостоятельно разбирает HTTP(s) запрос. Модуль вычитывает необходимые поля запроса и возвращает адрес пользователя.

Пишем простые проекты. Проект #1. Часть #1

Нудное введение:

Замечено, что новичкам трудно перейти от теории к практике - заставить себя писать, а не только читать. Чтобы помочь мы постоянно публикуем различный материал и указываем как применить эти знания на практике.

В этот раз решили написать 2 небольших проекта:

  • Первый - страница со статистикой отжимания. Будет показано, как с помощью flask + google chart's сделать проект для сохранения и визуализации количества отжиманий.
  • Второй - vk2rss - сервис для преобразования стен групп ВКонтакте в RSS. Будет рассмотрен парсинг, работа с VK API, создание простого GUI.

Оба проекта будут описаны в виде текста. А следующие попробую записать в виде скринкаста (Это ведь интересней?)

Сборники задач. Часть 2

Теория без практики - это ничто. Предлагаем ссылки на сборники задач.

Python-конференция

Теги

notify, os, isinstance, encode, database, all, многопоточность, mail, срез, сборник, pytest, новый год, конкурентность, аргумент, pycon, gevent, GIL, интерпретатор, python проект, игры, замыкание, copy, функциональное программирование, pynotify, pypi, типы данных, csv, график, testing, поиск ошибок, автоматизация, ardruio, swagger, память, файл, pip, тест, web, статический анализ, dsl, syntax, отчет, список, ide, графика, notification, rest, pycallgraph, githook, generic, hook. webhook, история, asyncio, logging, инструмент, swig, click, crawler, while, aiohttp, clonedigger, оптимизация, трансдьюсер, matplotlib, Бизли, bottle, концепция, типизация, fuzzy-testing, урок, language, путь, nose, image, тестирование, консоль, vk, c, list, operator, pylint, print, практика, сравнение, functools, измерение, польза, selenium, сопроцедуры, генерация данных, БД, мастер класс, plotly, tests, bokeh, генерация, производительность, winapi, flask, typing, strip, lxml, grab, scandir, Qt, pycharm, проект, книга, dictwriter, coverage, html, фп, pypy, signal, стандартная библиотека, now, weakref, google, практика программирования, corotine, sqlalchemy, nameko, синтаксис, import, паттер, virtualenv, api, зеленый поток, timeit, контекст, бд, funcy, encoding, кэш, json, статистика, байт-код, unittest, кодировка, opencv, datetime, ооп, itertools, package, fp, mixin, python, assert, pyqt, утка, garbage collector, курс, frozenset, numpy, django-debug-toolbar, терминал, xpath, closure, type, дубликат, requirements, статическая типизация, PIL, работа, debug, быстродействие, plot, рейтинг, водяной знак, ip, python3, yield from, видео, test, fuzzy, curses, gitter, unicode, decode, cache, twitter, pep, вконтакте, операционная система, ОС, тесты, any, awesome, задача, последовательность, geoip, ошибки, генератор, hardcore, toolbar, Wx, qt, магия, doctest, железо, marshal, множество, сигнал, greenlet, слайс, future, db, время, admin, pyside, regex, module, slots, примесь, sys, email, action, requirementstxt, регулярные выражения, дубликат кода, одноплатный компьютер, scrapinghub, micropython, фича, mock, raspberry pi, foreign key, ссылка, django, нг, pickle, модуль, celery, справочник, импорт, лямбда, rpc, with, наука, jinja2, log, обработка текста, super, set, svg, матрица, pygame, fixture, docstring, fabric, декларативный язык, пакет, опыт, магическая переменная, regexp, Гвидо, slice, gui, база данных, vkcom, юникод, yattag, ospath, cython, unit, maxmind, матан, документация, анализатор, Tags, менеджер контекста, yield, учебник, real-time, слабая ссылка, IPython, браузер, xml, GUI, gc, channel, машинное обучение, zip, библиотека, ошибка, данные, оповещение, парсинг, изображение, CLI, tox, фильтр, R, feedly, cffi, http, таблицы, python2, gunicorn, стандарт, if, requests, rss, tkinter, time, mechanize, gensim, интерфейс, enum, визуализация, postgresql, web parsing, язык, исключение, архитектура, lstrip, parsing, путь до файла, copy paste, multiprocessing, rstrip, статический анализатор, lambda