Контакты

Достижения

Все достижения (12)

Наибольший вклад в теги

Все теги (41)

Лучшие ответы пользователя

Все ответы (89)
  • Для чего используется каррирование (карринг) в реальных задачах?

    suguby
    @suguby
    программист, python, django, mysql, git, hg, linux
    Предположим есть функция, которая берет много параметров, а первый параметр - имя класса формы (в джанго)
    def cool_staff(form_class, inits, defaults, user, other_param):
        # много строчек кода

    и вы вдруг обнаруживаете что в вашем коде куча вызовов, у которых первый параметр одинаков.
    ...
    res = cool_staff(form_class=MainForm, inits={a:1, b:3}, defaults=[1,2,3], ...)
    ...
    res = cool_staff(form_class=MainForm, inits={a:100500, b:42}, defaults=[3,2,1], ...)
    ...

    Тогда делаете так:
    main_cool_staff = lambda **kwargs: cool_staff(form_class=MainForm, **kwargs)

    и ваши вызовы упрощаются
    ...
    res = main_cool_staff(inits={a:1, b:3}, defaults=[1,2,3], ...)
    ...
    res = main_cool_staff(inits={a:100500, b:42}, defaults=[3,2,1], ...)
    ...

    было в реальном проекте.
    UPD. Такая форма карринга не сработает для неименованных параметров
    main_cool_staff = lambda *args, **kwargs: cool_staff(form_class=MainForm, *args, **kwargs)

    поэтому используйте всегда именованные параметры, это хороший стиль.

    UPD2. Еще подсказали вариант
    import functools
    main_cool_staff = functools.partial(cool_staff, MainForm)

    работает и с неименованными параметрами. Спасибо Андрей Дугин
    Ответ написан
    6 комментариев
  • Входной уровень на Python Junior Developer?

    suguby
    @suguby
    программист, python, django, mysql, git, hg, linux
    Могу посоветовать изучение основ промышленного программирования на Python с наставником. Для работы помимо знания самого языка нужно уметь работать в команде, а это - git/mercurial, трекеры задач, проф средства разработки, тестирование кода, ревью, рефактор и деплой. Знание библиотек конечно же важно, но по опыту могу сказать, что общее понимание приходит быстро, а вот тонкости работы - только в процессе разработки и эксплуатации. Тем более что заранее сказать, что придется изучать - невозможно. Джанго - да, но вдруг поставят задачу, к примеру, интегрировать с рекламной сетью фейсбука - и вперед, изучай библы :)
    В итоге - я собираюсь вести такие курсы. Цель: базовые навыки для пром.разработки на пайтон. Опыт преподавания у меня по интернету есть + прочитал курс пром.программирования в МШП. Собирём группу из 7 человек и запилим какой-нить проект django/mysql/git/redmine :) Пишите, отвечу.
    Ответ написан
    8 комментариев
  • Начинающему программисту: есть примеры реальных заданий для джуниора Python?

    suguby
    @suguby
    программист, python, django, mysql, git, hg, linux
    Реальная задача: есть склад, на нём детали для кресел и стульев; есть спецификация для этих кресел и стульев (например стул А состоит из: сидушка красная - 1 шт, ножки - 4 шт, болты - 10шт, и так далее) Нужно написать программу, которая по остаткам склада вычислит:
    - каких изделий можно произвести больше?
    - каких изделий нужно произвести, что бы получить максимальную выгоду (в спецификации есть отпускная цена, в остатках склада - закупочная цена деталей)?
    Ответ написан
    Комментировать
  • Как прочитать html файл в Python?

    suguby
    @suguby
    программист, python, django, mysql, git, hg, linux
    видно что происходит попытка перекодировать из любимой винодовой cp1251 :) а файл видать в UTF8...
    попробуй открыть как 'rb' и конвертировать построчно
    f = open (filemane , 'rb')
    for line in f:
         print(line.decode('utf8'))

    а вообще хорошо бы знать, в какой кодировке файл.
    Ответ написан
    3 комментария
  • Форматирование вывода в python в виде таблицы?

    suguby
    @suguby
    программист, python, django, mysql, git, hg, linux
    Если после спецификатора ‘:’ указать число — оно будет обозначать минимальную ширину поля, выраженную в количестве символов. Это удобно использовать для создания приятных для прочтения таблиц:

    >>> table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 7678}
    >>> for name, phone in table.items():
    ...     print '{0:10} ==> {1:10d}'.format(name, phone)
    ...
    Jack       ==>       4098
    Dcab       ==>       7678
    Sjoerd     ==>       4127


    https://ru.wikibooks.org/wiki/Python/%D0%A3%D1%87%...
    более полно - https://docs.python.org/2/library/string.html#form...
    Ответ написан
    Комментировать

Лучшие вопросы пользователя

Все вопросы (5)