Как стать автором
Поиск
Написать публикацию
Обновить
388

Python *

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

Сначала показывать
Порог рейтинга
Уровень сложности

Сортировка миллиона 32-битных int'ов в 2 мегабайтах памяти на Питоне

Время на прочтение4 мин
Количество просмотров8.5K
Мой перевод статьи Гвидо ван Россума:

Меня тут в шутку спросили: смогу ли я отсортировать миллион 32-битных int'ов в 2 мегабайтах памяти на Питоне. Во время размышления, мне пришло в голову задействовать механизм ввода-вывода с использованием буферной памяти.

Вообще, это именно шуточный вопрос — одни только данные займут 4 мегабайта, при условии бинарного представления! Правда, можно пойти на хитрость — взять файл, содержащий миллион 32-битных int'ов. Как же отсортировать их, используя минимальное количество памяти? Это должна быть какая-то разновидность сортировки слиянием, в которой небольшие куски данных сортируются и записываются во временный файл, после чего происходит слияние временных файлов для получения окончательного результата.

Вот мое решение:
Читать дальше →

Заметки о метапрограммировании в Python

Время на прочтение2 мин
Количество просмотров7K
По мере накопления опыта программирования на одном языке, все мы нарабатываем стандартные для себя приемы программирования. Чем выше наш опыт, тем больше количество, более разносторонни методы их работы. При переходе на другой язык, мы стараемся их воспроизвести. Иногда, такое бывает что часть из них неактуальна или неэффективна. Большую часть времени от изучения языка отнимают новые несвойственные прежним нам, приемы. Я хотел бы отметить некоторые особенности Python, которые для меня были не очевидны поначалу освоения.
Читать дальше →

Пишем апплет для GNOME на Python

Время на прочтение9 мин
Количество просмотров4.9K
Публикую данный пост по просьбе уважаемого VladX, у которого возникло временное недопонимание с кармой.

Апплет — это маленькое приложение, встраиваемое непосредственно в панель GNOME. Обычно апплет выполняет какой-то опеределенный узкий функционал (изменение громкости, монтирование устройств), что выгодно отличает его от громоздкого оконного приложения. На самом деле знающему Python кодеру не составит труда написать собственный апплет, но и для незнающих есть выход: большое количество полезных (и не очень) апплетов лежит на сайте gnomefiles.org, помимо этого, на официальном сайте есть примеры написания апплетов на C.
Поехали!

Реализация небольшого асинхронного сервера

Время на прочтение9 мин
Количество просмотров21K
Целью публикации данного топика является представление аудитории Хабрахабра кода небольшого асинхронного сервера, написанного на Питоне с использованием практически «голых» сокетов.

Мне приходилось писать достаточно много приложений, работающих в качестве сетевых сервисов. Эти сервисы были написаны на разных языках, под разную нагрузку и каждый раз реализация нового сервиса чем-то отличалась от предыдущей. Под хабракатом я привожу пример довольно удачной, на мой вгляд, реализации «учебного» сервера, сопровождая код своими комментариями по мере необходимости.
Читать дальше →

Jabber-to-Evernote Gateway изнутри

Время на прочтение3 мин
Количество просмотров1.8K
Некоторое время назад я запустил бота для постинга в Evernote через джаббер и пообещал открыть исходный код, чтобы показать примеры работы с Evernote API и OAuth.

Код — в конце статьи, а для начала я расскажу о некоторых особенностях работы с Evernote.
Читать дальше →

6 способов слияния списка списков

Время на прочтение4 мин
Количество просмотров126K
Зашел тут у нас в офисе разговор как наиболее «красиво» и быстро склеить список списков в Питоне. Действительно как?

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

ВАРИАНТ1
Все знают, что элементы списка можно перебирать в цикле и, то что можно добавлять элементы в конец. Это приводит нас к первому варианту решения:
def listmerge1(lstlst):
    all=[]
    for lst in lstlst:
        for el in lst:
            all.append(el)
    return all

Мало того, что функция растянулось аж на 6 строк, так вдобавок она еще и не эффективная.
Попробуем её улучшить в обоих смыслах: скорости и красоты («pythonic way»).
Читать дальше →

Полиглоты в продакшн Питона

Время на прочтение15 мин
Количество просмотров7.5K
Сразу, в порядке завлекалочки. Нашей целью будет научиться писать программы-полиглоты, способные интерпретироваться сразу на нескольких языках программирования (одним, «базовым» из которых является Python). При этом, в случае интерпретации на одном из них, программа будет генерировать другую программу, функционально схожую (или даже эквивалентную) той, которая выполняется в случае интерпретации на другом языке.

И самое интересное: подходы, используемые при написании этой программы, будут интересны не столько академически, сколько практически — при разработке программы с использованием этих подходов разработка будет проще и удобнее (хоть поначалу и чуточку непривычно), а программа будет эффективнее, чем без них.

Впрочем, это звучит страшнее, чем является.

Поехали?

Разворачиваем nginx + mod_wsgi на сервере

Время на прочтение8 мин
Количество просмотров29K
Здрасти. Долго-долго я присматривался к замечательному фреймворку django, читал книгу, изучал статьи, пробовал писать hello world'ы (со встроенным в джангу сервером это было легко и приятно). А вчера я попробовал настроить от начала до конца боевой сервер, и как оказалось, это не так просто, и мне даже показалось, что будь я моложе и неопытнее, я бы плюнул на это дело. Вот я и решил поделиться с читателями полной инструкцией, снабдив её некоторыми рассуждениями и конфигами. Статья расчитана на начинающих, но будет интересно всем, обещаю.
Читать дальше →

Скрипты Python против Bash — 2 или Tips & Tricks

Время на прочтение4 мин
Количество просмотров14K
image
Довольно давно я написал статью, в которой приводил примеры основ работы с системой с помощью Python-скриптов. Из-за мельком оброненной фразы (достаточно взглянуть на название топика) статья получила довольно много комментариев холиварного и не очень характера. Кому-то, возможно, захотелось воспользоваться возможностями Python для администрирования (сейчас подобного рода тулзы на питоне как раз набирают популярность). Так почему бы не завлечь в свой стан еще немного единомышленников? :) Встречайте — небольшая подборка простых приемов для тех или иных целей.
Вперед!

Случайные числа из звуковой карты

Время на прочтение15 мин
Количество просмотров13K
Многие когда-либо интересовались случайными числами. Хочу поделиться моими экспериментами по получению истинно случайных чисел с помощью «аппаратного генератора» встроенного в практически любой компьютер — звуковой карты.

При подготовке материала, я переписал свой старый Си код на Питоне, поэтому данный опус также является примером по использованию Windows DLL из Питона с использованием стандартной библиотеки ctypes.

В конце статьи сравниваются данные полученные от двух звуковых карт Realtek и Audigy 2, приведены результаты статистических тестов на случайность.

UPD Исправил пропавшие в коде нули, которые съело НЛО.
Читать дальше →

Порядок разрешения методов в Python

Время на прочтение15 мин
Количество просмотров193K
В этой заметке рассматривается алгоритм MRO С3 и некоторые специфические проблемы множественного наследования. Хотя и алгоритм и проблемы не ограничиваются рамками одного языка, я акцентировал своё внимание на Питоне. В конце приведён список полезных ссылок по данной теме.
Читать дальше →

Параллельный Питон, начало

Время на прочтение4 мин
Количество просмотров16K

Disclaimer


Родилась у товарища географическая потребность перенести кусочек карты из одного участка Земли в другой. Он это по привычке сделал на дельфях, мне же захотелось попробовать в действии питон, в коем я спецом не являюсь.

Практика


Собственно перевести алгоритм оказалось делом совсем несложным, но вот скорость его работы оставляла желать лучшего.
Первым делом в ход пошел Psyco, ускорив обработку в 6 раз.

Получить лучший результат без изменения алгоритма уже не представлялось возможным, поэтому в ход пошел метод грубой силы — распараллеливание задач.
Читать дальше →

Учебник по языку программирования Python (хабраиндекс)

Время на прочтение1 мин
Количество просмотров314K

Серия статей «Основы Python»


I, Начало
II, Строки
III, Списки, кортежи, файлы
IV, Генераторы списков
V, Определение функций, основы
VI, Расширенное определение функций

Об основах языка Python в сжатой форме

Продвинутый уровень


Сила и красота декораторов Короткий экскурс в метапрограммирование.
Итерируем все и вся Специфика циклов в Питоне.
Как я учился работать с XML
Консервация объектов в Python Использование модуля Pickle.
Memoization в Python Оптимизация работы программ.
Простейшее рисование с помощью PIL
Regexp и Python: извлечение токенов из текста
Как писать маленькие приложения на python с графическим интерфейсом (библиотека Qt).

http://netsago.org/ru/docs/1/12/
Одеваем скрипты Python с помощью EasyGui (добавляем простой диалоговый интерфейс)

http://djbook.ru/
Учебник по Django (Python-фреймворк для веб-приложений)

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

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

Regexp и Python: извлечение токенов из текста

Время на прочтение9 мин
Количество просмотров84K
imageРазбор логов и конфигурационных файлов — задача часто возникающая и многократно описанная. В этой статье я расскажу как на языке python реализовать ее классическое решение: с помощью регулярных выражений и именованных групп. По возможности постараюсь рассказать причины, по которым применяется то или иное решение, а также обрисовать подводные камни и методы их обхода.

Читать о том, как препарируют текст

Как я учился работать с XML

Время на прочтение4 мин
Количество просмотров82K
image
Честно говоря, я довольно сильно удивился, не найдя статьи по подобной теме на хабре. А тема-то довольно актуальная и нужная, поэтому возьму на себя смелость немного ее осветить.
И как же?

Персональный зоопарк или немного о Pygame — Часть 1

Время на прочтение7 мин
Количество просмотров40K
image
Для тех, кто не в курсе: Pygame — это очень и очень неплохой фреймворк для разработки игр на языке Python. Причем поддерживается не только работа с 2D и 3D, но и при желании можно установить биндинги ко многим популярным графическим и физическим движкам. Кстати, Pygame вовсе необязательно использовать именно для игр, можно также создавать и программы с необычным интерфейсом, например, какой-нибудь трехмерный фронтенд к базе данных.
Вот мне, собственно, и захотелось рассказать об основных принципах работы с этим фреймворком, мало ли, может, пригодится кому :)
Ну что, погнали?

Python для системных администраторов

Время на прочтение8 мин
Количество просмотров94K
Автор перевода messerr, просто с кармой ему не повезло.

Введение

 
Как системный администратор, вы сталкиваетесь с многочисленными проблемами. Управление пользователями, дисковым пространством, процессами, устройствами и бэкапами могут стать причиной потери волос, юмора или вменяемости у многих администраторов. Shell скрипты могут выручить, но они зачастую имеют множество ограничений. В этом случае полнофункциональный скриптовый язык, такой как Python, способен превратить утомительную задачу в легкую и, смею сказать, веселую.
Примеры в этой статье демонстрируют различные возможности Python, которые вы можете использовать на практике. Если Вы работаете с помощью них — вы на правильном пути к пониманию силы Python.
 
Читать дальше →

Объединяем twitter.com и vkontakte.ru

Время на прочтение8 мин
Количество просмотров6.8K
Пользуетесь ли вы twitter’ом? Если ответом является «Да», то милости просим под кат, где будет рассказано про способ автоматического репостинга сообщений из twitter’а в статус сообщения на сайте vkontakte.ru используя python.
Мне интересно

IPython: замена стандартного Python shell

Время на прочтение5 мин
Количество просмотров57K
Python shell достаточно удобная вещь для тестирования и изучения возможностей языка, кто-то даже использует его в качестве калькулятора(что между прочим весьма удобно), в этом цикле статей я бы хотел рассказать о IPython — замене стандартного Python shell'а, который предоставляет расширенный список возможностей, что делает работу с ним более эффективной.

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

Вклад авторов