Некоторое время назад, в силу определенных причин, мне пришла в голову мысль о том, чтобы начать изучать какой-нибудь новый язык программирования. В качестве альтернатив для этого начинания я определил два языка: Java и Python. После продолжительного метания между ними и сопутствующих нытья и долбежки головой о стену (у меня с новыми языками всегда так — сомнения, раздумья, проблема выбора и т.д.), я все-таки остановился на Python. Окей, выбор сделан. Что дальше?
А дальше я стал искать материал для изучения. Взялся я за это довольно основательно. Ограничиваться документацией и выпущенными печатными изданиями, на мой взгляд, — не кофильфо. Всегда интересно «потрогать руками». Стоит сказать, что для меня, например, большая проблема придумать для себя задачу, причем ту, которую интересно выполнить. Но опять же, перерывать весь Интернет в поиске чего-то, что поможет «загореться» — излишняя трата времени. Поэтому я нашел компромиссное решение — я перерыл Хабр, точнее его хаб «Python».
Перечень найденного материала ниже. Там не всё — что-то мне было неинтересно, в каких-то статьях я не нашел полезной информации, но большинство статей сгруппированы по категориям, под спойлерами. Категории довольно условные, прошу за это не пинать. Надеюсь, что еще кому-нибудь, помимо меня, этот пост будет полезен. И если вы думаете, стоит ли начать изучение Python или нет — считайте это знаком, что стоит :)
Основы языка программирования Python за 10 минут
Пишем красивый идиоматический Python
Be Pythonic
Code Like a Pythonista: Idiomatic Python: 1 | 2 | 3
Python-way. Работа над ошибками
Вещи, о которых следует помнить, программируя на Python
Python качественно
Pythonic
Путеводитель по Python. Пишем великолепный код
Доклад по Python
Уроки Python от компании Google
Советы Google по кодированию на языке Python: 1 | 2
Прочие варианты использования оператора else
Онлайн-репетитор по Python
Регулярные выражения, пособие для новичков: 1 | 2
Юникод для чайников
Материалы продвинутого уровня по Питону
Заметки об объектной системе языка: 1 | 2 | 3
Абстрактные классы и интерфейсы
Некоторые возможности Python о которых вы возможно не знали
Сопрограммы
Как устроен namedtuple или динамическое создание типов
Итерируем все и вся
Why itertools rocks
Порядок разрешения методов в Python
Руководство по магическим методам в Питоне
Ultimate benchmark пяти с половиной способов проверить наличие атрибута объекта
Интервально-ассоциативный массив
Неочевидное поведение некоторых конструкций
Консервация объектов в Python
Устранение утечек памяти в приложении на Питоне
Memoization в Python
Сортировки: key vs cmp
Всё, что Вы хотели знать о слайсах
Неочевидная оптимизация по скорости при решении конкретной задачи на Python
Ускорение кода на Python средствами самого языка
Производительность в Python. Легкий путь
Пользовательские атрибуты в Python
Руководство к дескрипторам
Еще немного о дескрипторах в Python
Как работает yield
Пайпы, the pythonic way
Сравнение эффективности способов запуска веб-приложений на языке Python
Использование памяти в Python
О порядке поиска пакетов и модулей для импорта в Python
Организация текучих (fluent) интерфейсов в Python
Антипаттерн settings.py
6 способов слияния списка списков
Python: советы, уловки, хаки: 1 | 2 | 3 | 4
Консольные хитрости Питон: история команд + автодополнение
Python — оптимизация хвостовой рекурсии
Устранение Хвостовой рекурсии
Python: надежная защита от потери запятой в вертикальном списке строк
Сортировка миллиона 32-битных int'ов в 2 мегабайтах памяти на Питоне
Добавляем чуть больше рефлексии: декораторы
Сила и красота декораторов
Python: декорируем декораторы. Снова
Декоратор cached_property
Полное покрытие кода
Генерация юнит-тестов
Непрерывное тестирование питонопроекта
TextTest — кроссплатформенный фреймворк на python для тестирования GUI и не только: 1 | 2
Модуль Mock: макеты-пустышки в тестировании
pdb – Интерактивный отладчик
Профилирование и отладка Python: 1 | 2 | 3 | 4
Параллельное программирование в Python при помощи multiprocessing и shared array
Основы работы с потоками в языке Python
Еще раз о многопоточности и Python
Python threading или GIL нам почти не помеха
Python и Twisted — Заметки о параллельной обработке данных
Учимся писать многопоточные и многопроцессные приложения на Python
Как устроен GIL в Python
Stackless Python и Concurrence
Конкурентность в асинхронном приложении на примере twisted
Цикл статей о PyQt4 #1: 1 | 2 | 3 | 4 | 5
Цикл статей о PyQt4 #2: Посиделка первая | Посиделка вторая
PyQt: простая работа с потоками
Реализация паттерна MVC для PyQt
Написание приложений, основаных на Qt, на языке Python
WxPython:
Сказ о wx.Python
Знакомство с wxPython
Пример использования WxPython для создания нодового интерфейса: 1 | 2 | 3 | 4 | 5
Потоки в wxPython
PyGTK:
Компоновка — начало начал
Ещё немного о компоновке и виджетах
Прогресбар и нити в PyGTK
PyGTK: потоки и магия обёрток
Введение в pygtk/gtkbuilder: пишем калькулятор
Tkinter:
Введение в Tkinter
Рисование графиков. Python. Tkinter
Функциональное программирование для землян — списки
Откуда идут «функциональные» корни Python
Ненормальное функциональное программирование на Python
Не ещё одна статья о функциональном программировании
Для тех, кто хочет странного: монады в Python
Монады в Python поподробнее
Абстрагирование потока управления
Правильное абстрагирование потока управления
Паттерны проектирования без ООП
Vim и Python: Vim+Python. Для начинающих или Настраиваем Vim под Python
+ Django:Настройка Vim для работы с Python и Django или VIM, Django… Django, VIM
Emacs:
Цикл Emacs и Python: 1 | 2
Sublime Text 2:
Пишем простой плагин для Sublime Text 2
Geany:
Настройка и использование Geany с Python
Notepad++
Скрипт для Notepad++ на Python
В основном API различных социальных сетей и сервисов.
Пишем себе немного OpenID-авторизации
Экспорт друзей VK в Google Contacts
Скачивание музыки из VK: 1 | 2
Twitter + VK: 1 | 2
Клиент для SOAP API Почты России
Jabber-to-Evernote Gateway изнутри
Скрипт проверки наличия свободных дат в посольстве
Flightstats API: Пишем свое табло прилетов с Боингами и Аэробусами
Получение любимых аудиозаписей с pandora.com
Bing + Python, поиск изображений
Чат:
Программа-мечта начинающего питоновода
WebSocket-чат на Tornado для вашего Django-проекта
Yet another python Chat client
Боты:
ICQ бот
Простой Twitter-бот
Не совсем обычный XMPP-бот: туннелирование
Пишем бота для игры «Найди отличие»
Skype-бот для голосовых конференций
Пишем бота для Twitter на основе GitHub API
Сокеты, серверы:
Сокеты в Python для начинающих
Асинхронный удар
Асинхронный http-клиент, или почему многопоточность — лишнее
Как применять Linux epoll в Python
Сервер на python для websockets
Inbox.py: самый простой SMTP-сервер
Реализация небольшого асинхронного сервера
FTP сервер с авторизацией через базу данных
Система:
Мониторинг за изменениями файловой системы
Python на примере демона уведомления о новых коммитах Git
Git. Автоматическая проверка сообщения коммита на стороне сервера с помощью Python
Скрипт для рекурсивного сравнения директорий
Python для системных администраторов
Gnome Applets. Введение
Пишем апплет для GNOME
Пишем апплет-переводчик для Gnome
Totem Gnome Applet
Переименование процессов в Python
Как написать дополнение для GIMP на языке Python
KDE4 + Python. Плазма-змей
KDE4 Plasma Desktop. Создание плазмоида
Whois: практическое руководство пользователя
Симуляция нажатий Home, End, PgUp, PgDown
Демон для удаленного управления компьютером через e-mail
Работа с консолью:
Простой консольный прогрессбар на питоне
Пишем консольный переводчик для *nix на Python
Парсинг, обработка текста:
Первые шаги в программировании на Python
Пишем свой шаблонизатор на Python
Как я учился работать с XML
Кузявые ли бутявки, т.е. пишем морфологический анализатор
Обработка Excel файлов с использованием Python
Социальный граф хабрасообщества
Regexp и Python: извлечение токенов из текста
Автоматизируем проверку трекинга почты России
Доставка свежей прессы с помощью Python прямо в почтовый ящик
Разбор кода и построение синтаксических деревьев с PLY. Основы
Частотный анализатор английских слов
Grab — python библиотека для парсинга сайтов
Документация по Grab — библиотеке для парсинга сайтов
Парсинг на Pуthon. Как собрать архив Голубятен
Генерим PDF бочками
Работа с изображениями:
Играемся с изображениями в Python
Получаем тип и размеры изображения без скачивания его целиком
Решение проблемы оперативного ресайза изображений
Геймдев:
Пишем платформер на Python, используя pygame: 1 | 2.1 | 2.2
Игра Жизнь на Python
Blender 2.49b + Python 2.6 – используем клавиатуру в своей игре
Blender 2.6 + Python 3.2 – задействуем устройства ввода в собственной игре
Python + Django:
Заметки для построения эффективных Django-ORM запросов в нагруженных проектах
Django ORM, gevent и грабли в зелени
Хостинг картинок за полчаса
Фотогалерея на Django с использованием Google Picasa в качестве хостинга
Сумбурные заметки про python и django
Пишем backend для мобильного приложения за несколько минут
Капча с помощью PIL или практический велосипед
Flask:
Мега-Учебник Flask: 1 | 2 | 3 | 4
Создание RESTful API в Google App Engine на основе Flask
Алгоритмы и структуры данных, ИИ, анализ данных:
Декодирование капчи на Python
Распознавание некоторых современных CAPTCHA
Задачка о восьми ферзях
Реализация графов и деревьев на Python
Поиск в строке. Реализация в CPython
Анализ рынка ноутбуков с помощью Python
Введение в анализ текстовой информации с помощью Python и методов машинного обучения
Введение в анализ данных с помощью Pandas
Шифр Виженера. Разбор алгоритма на Python
Латентно-семантический анализ и поиск на python
Необыкновенный способ генерации лабиринтов
PyBrain работаем с нейронными сетями на Python
Простой классификатор на PyBrain и PyQt4
Обучаем компьютер чувствам (sentiment analysis по-русски)
Определение части речи слов в русском тексте (POS-tagging)
Частотный анализатор английских слов
Вне категории:
Реализация кеша с ограничением по числу элементов на Python — решения: простое и посложнее
Случайные числа из звуковой карты
Пишем модуль расширения для Питона на C
Создаем симулятор солнечной системы
Взламываем шифры с Python
История одной оптимизации
Кодим безумный пассивный сниффер в виде модуля для Python
Рисуем волну .wav-файла
Tilt-Shift фотографии своими руками
Программный захват с вебкамеры
Распознаём изображение с токена при помощи камеры
Руководство: пишем интерпретатор с JIT на PyPy
Играемся с гироскопом ноутбука thinkpad в linux
P.S. Если есть какие-то предложения о добавлении сюда ссылки на материал — прошу в личку. По поводу опечаток и чего-нибудь этакое — туда же.
Автор: andymitrich