Ответы пользователя по тегу Python
  • Насколько хорош Python для веб-приложений?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    Пишите на PHP. Пишите хоть что-нибудь! Пишите столько сможете. Пишите за что платят. Пишите что интересно. Но пишите на PHP. А потом попробуйте Python. После этого таких вопросов у Вас не будет. Более-того, когда увидите кого-то кто советует "пых" для веба Вы не будете разубеждать. По той причине, что любой программист ОБЯЗАН наступить хотя бы разок на грабли. Только метод "наступание на грабли" лучше всех учит правильным вещам. Я еще не видел ни одного программиста, который наступил бы 20 раз на грабли и чему-то бы не научился.

    Так что вперед, к программированию на "пыхе" ;)
    Ответ написан
    6 комментариев
  • Как можно ещё сократить количество строк в коде?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    Александр
    1. Как уже говорили в одном из ответов Вам надо дать отличные названия и убрать комментарии. Есть такое правило, если есть кусок кода, который хочется прокомментировать, то стоит этот кусок выделить в отдельную функцию и дать ей хорошее названии
    2. Функции нужно стремиться оформлять так чтоб они меньше побочных эффектов производили. Должна одна что-то спрашивать у юзера и выводить ему результат, а другие должны для нее выполнять вычислительную работу. У Вас же raw_input в одном месте, print в другом. Не зачем так писать.
    3. Не обязательно в маленькой функции писать обработчик исключений. Вынесите это в высокоуровневый код.

    Приведу аналогию с начальник-подчиненный. Начальник дает задачу , подчиненный берет ее и убеждается что понял ее, если что спрашивает уточняющие или сразу говорит "не могу выполнить, не хватает ...". Когда же он что-то делает, он не парится а хорошо ли плохо. Зато если вдруг что-то серьезное произошло, то он не парится на тему, а как бы это исправить, а просто уведомляет "Иван Иваныч, подшипники надо истерлись, надо бы купить новые" и это проблема начальника обратиться в другой отдел. От подчиненного все что было нужно уже имеется!
    Ответ написан
    Комментировать
  • Как вносить правки в dist-packages в Питоне?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    Найти этот модуль на гитхабе\битбакете или еще где и предложить свой pull-request.
    Ответ написан
  • Зачем нужен ООП?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    Не везде и не всегда нужны классы. Вы верно заметили. НО! Прежде чем принять решение о том, что в конкретном месте кода класс только вредит, нужен профайлер или другие инструменты позволяющие принять такое решение. К примеру в Python словарь значительно выигрывает по скорости чем класс с методами.

    Фишка ООП в том, что человек уже думает классами! Поднимаем голову к небу и видим "Птица летит", другими словами "У объекта "Птица" был вызван метод "Лететь"", но мы так сложно не думаем и для нас это просто "Летящая птица".
    Вспомните детство и моменты когда родители посылали за хлебом. Как это происходило? Возможно это было так: "Объект сын в твое поле ложу объект "Задача" с полями "хлеб", "комод" и "100 рублей", в поле "результат" ложу "Хлеб". Объект сын вызываю метод "Купить"". Не думаю что это было так, мне кажется это было так: "Сын возьми 100 рублей и купи хлеба". В неявном виде обратились к объекту "Сын", вызвали метод "Взять" и передали аргумент "100 рублей" и ожидаем результат вызова в виде значения "Хлеб".

    Попробуйте процедурный подход переложить в нашу естественную жизнь? ;) Попробуйте так общаться, процедурно. Это очень сложно. Потому что человек привык думать объектами! Самолет, кошка, лошадь, дерево и др. Для нас вроде есть концепция "кошка", но конкретная кошка "Масяня" сильно отличается от другой конкретной кошки "Машка".

    Изучая задачу мы прежде всего должны задать вопрос : "Что является условием завершения задачи?" и вторым не менее важным "Что используется при достижении результата?". Вот это "что используется" как правило и есть объекты.
    Ответ написан
    8 комментариев
  • Какие есть отличные уроки по Python?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    Не знаю подойдет ли Вам мой путь развития. Опишу свой путь изучения Python-а, т.е. ту "дорожку" по которой прошел сам.
    У меня были задачи разного характера:
    * Поискать в логах тестируемого приложения значения одного типа и принять решение, ошибка сборки или нет
    * Обновить версию приложения в исходном код на основе входного json-файла содержащую параметры новой версии
    * Скачать исходники из Mercurial из текущей ревизии, Собрать приложение, Запустить тестовое приложение и если обнаружена ошибка, то откатиться до предыдущего тега по формату ver__ и повторить снова. После обнаружения тега на котором ошибки нет напечатать это в логе

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

    Уверяю Вас: задача + справочник Д.Бизли + Stackoverflow = то что Вам нужно!
    Ответ написан
    Комментировать
  • Исполнение скомпилированной программы в python-скрипте

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    Вот куски кода из моего скрипта для Python 3.3:
    def _run_process(self, args):
    		proc = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    		stdoutBin = proc.stdout.read()
    		stderrBin = proc.stderr.read()
    		proc.stdout.close()
    		proc.stderr.close()
    		proc.wait()
    		self._toolResult['retcode'] = proc.returncode
    		self._toolResult['stdout'] = stdoutBin.decode('ascii')
    		self._toolResult['stderr'] = stderrBin.decode('ascii')
    Ответ написан
    Комментировать
  • Прошу пояснить когда нужно писать python-модуль на чистом си, вместо использования ctypes?

    EvilsInterrupt
    @EvilsInterrupt Автор вопроса
    System programming, Reversing Engineering, C++
    Да, именно про ctypes задал вопрос.

    Я отлично осведомлен о наличии функций на Py_*.

    Попытаюсь другими словами. Когда нам надо что-то использовать, то что недоступно в питоне. К примеру большой код библиотеки написанной на C++ силами компании где работаем, то мы можем это сделать двумя способами:
    1) Написать чистый модуль с использованием языка программирования С
    2) Написать dll, где функции будут либо по cdecl, либо по stdcall, а далее написать модуль на Python с использованием модуля ctypes

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

    Вот и возникает вопрос: Приведите пример ситуации когда второй способ либо не возможен или слишком затруднителен и поэтому нужно использовать первый.

    Надеюсь сейчас понятней вопрос.

    P.S.:
    Минусовать не зачем! Если не поняли вопроса, задайте уточняющий. В противном случае подобное поведение ставит Вас на уровень придурка. Мы все чего-то можем не знать и это вполне естественно, для этого и существует возможность общения с другими специалистами.
    Ответ написан
  • Как нужно обрабатывать исключения, если возникает "цепочка исключений"?

    EvilsInterrupt
    @EvilsInterrupt Автор вопроса
    System programming, Reversing Engineering, C++
    Вопрос исчерпан, по невнимательности допустил ошибку логирования в except-блоке, а объект логера при этом получен в try-блоке.
    Ответ написан
    Комментировать
  • Какие есть библиотеки на Python для принятия, отправки и фильтрации пакетов?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    Может слышали, но предложу «Gray Hat_Python Programming for Hackers and Reverse Engineer.pdf»
    Ответ написан
    1 комментарий