• Добавлять ли virtualenv в git?

    idegree
    @idegree
    Senior Workaround Developer
    Лучше писать зависимости в requirements.txt и уже этот файлик добавлять в git.
    Пример файла (можно с указанием версий через ==, можно без):
    Django==1.8.5
    django-flat-theme==1.1.1
    mysql-python==1.2.5
    gunicorn==19.4.1
    pytz==2015.6
    python-memcached==1.57
    django-debug-toolbar==1.4


    При клонировании репозитория на другой компьютер или сервер выполните (предварительно создав и активировав нужное виртуальное окружение):
    $ pip install -r requirements.txt
    Таким образом, вы разом установите все необходимые пакеты.
    Ответ написан
    3 комментария
  • Как установить python 3.4.3 (или обновить до 3.4.3) через SSH на сервере?

    MrLinch
    @MrLinch
    Just like coding...
    Для таких целей рекомендую pyenv.
    Ответ написан
    Комментировать
  • В чём принципиальная разница, использовать магический метод __getitem__ или получать элемент по индексу?

    MrLinch
    @MrLinch
    Just like coding...
    Разница все же есть. Не в результате, а методе которым это результат получаем. (использование [] эффективней)

    Припустим есть у нас такой код

    items = [1, 2, 3, 4]
    
    def get_item_as_method():
        return items.__getitem__(1)
    
    def get_item_as_operator():
        return items[1]


    Если мы дизассемблируем (модуль dis) эти функций увидим следующие:

    Для get_item_as_method:
    LOAD_GLOBAL            0 (items)
    LOAD_ATTR                1 (__getitem__)
    LOAD_CONST             1 (1)
    CALL_FUNCTION        1 (1 positional, 0 keyword pair)
    RETURN_VALUE


    Для get_item_as_operator:
    LOAD_GLOBAL              0 (items)
    LOAD_CONST               1 (1)
    BINARY_SUBSCR
    RETURN_VALUE


    Видим в первом случае для получения результата нужно выполнить две операций (LOAD_ATTR и CALL_FUNCTION), а в первом всего одну BINARY_SUBSCR.
    Ответ написан
    Комментировать
  • В чем преимущество динамически типизированных языков?

    Tiendil
    @Tiendil
    Разработчик ПО.
    Преимущество у динамически типизированных языков, конечно, не в синтаксисе, а в семантике.

    Благодаря определению типов во время исполнения программы сильно облегчается метапрограммирование. Очень сильно облегчается. Оно, в свою очередь, упрощает всю остальную работу.

    Благодаря гибкости кода в рантайме (см. тот же duck typing) и интроспекции (анализ свойств объектов и кода) получается на порядок проще и быстрее писать универсальные алгоритмы и конструкции вроде декораторов, всяческих ORM и подобных вещей. Это сильно упрощает интерфейсы библиотек, что в совокупности ведёт к более простому коду и к плавной кривой обучения новичков.

    Из моей практики (5 лет писал на C++, потом столько же на Python, эти сроки немного пересекались) могу сказать, что с точки зрения ошибок типизации (а собственно их и ставят в недостаток динамически типизированным языкам) разница минимальна — они очень редки и все отлавливаются автоматическими тестами. Конечно, если у вас руки откуда надо растут, а если не откуда надо, то эти ошибки будут далеко не самой большой проблемой. Поэтому в области разработки софта, не требовательного к производительности, такие языки рулят.

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

    В итоге мы получаем классическую дилемму: повышение уровня абстракции против повышения уровня специализации. У каждого пути есть свои плюсы и минусы.

    По производительности питона ссылок уже накидали, но в любом случае тут надо исходить из требований конкретной задачи — проще взять и протестировать самому.
    Ответ написан
    Комментировать
  • Как использовать Django в стороннем приложении?

    un1t
    @un1t
    Возможно ли как то из обычного python скрипта получить доступ к рабочим моделям django?


    Можно, но это какое-то странное решение. Может стоит на дажнге бакенд сделать?
    И как вариант посмотри на https://docs.djangoproject.com/en/1.8/howto/custom...
    Ответ написан
    1 комментарий