Синтаксис Python: переменная __all__

Вы наверное слышали фразу "wild import - зло". В коде это выглядит так

from my_super_module import *

Ответ почему это "зло" очень простой - вы импортируете всё - то что надо и то что не надо. А значит вы можете смело перегрузить какой-то метод. Как же быть? Можно импортировать только нужные переменные и функции/классы, что является правильным подходом. Но ведь должен быть альтернативный ...

more ...

Учебные материалы: сборник ООП паттернов

ООП преподают везде. В школе, в универе, в колледже, на курсах, упоминают в статьях, есть даже много книг на эту тему - например, банда четырех. Важным моментом ОО это паттерны. Это набор узаконенных хитростей и хаков, которые позволяют обходить недостатки самого ООП. По ссылке https://github.com/faif/python-patterns вы сможете найти готовый код для множества паттернов.

А как вы считаете ...

more ...

Hardcore Python: как PyPy запускает твой код

PyPy - интерпретатор Python написанный на Python. Прелесть PyPy что он работает быстрее чем стандартный Python. В этом видео вы сможете узнать за счет чего это происходит

more ...

Опыт разработчиков: использование переменной _

Хорошие имена переменных - это признак хорошего кода. Для циклов часто используют одно-буквенные переменные, для временных переменных тоже короткие, для глобальных - ЗАГЛАВНЫЕ. Есть и другие рекомендации. Все они написаны кровью из глаз разработчиков.

Перейдем к заголовку и сразу пример: Пускай есть функция, которая возвращает 3 значения.

def super_function():
    ....
    return a, b, c

Функция возвращает три значения, а нам в данном кусе ...

more ...

Таинство стандартной библиотеки: сериализуем данные с помощью marshal

Наверное, вы слышали про модуль Pickle, который умеет сериализовать объект в бинарный вид, который можно потом сохранить/загрузить в /из файл.

А модуль marshal сериализует объект в текстовый вид. Получив строку вы можете отправить ее другу по email, а уже из строки снова получить объект

Особенности модуля:

  • Данные сохраняются в платформонезависимом формате.
  • Поддерживаются только None, целые числа, длинные целые числа ...
more ...

Интересные концепции: fuzzy-testing - тестирование грубой силой

Тестирование программ повышает уверенность в ее способности работать. Есть даже большие школы, которые говорят о тестах, например, TDD, BDD.

У ручных тестов есть недостаток, среди прочих - тесты пишет человек. В следствии этого - он не сможет проверить работу функции/класса/etc на всех данных. А когда нам быть уверенным что даже на самых невалидных данных работает корректно, то без случайных данных ...

more ...

Полезные инструменты: fabric - автоматизируем рутину

Ситуация: написали web-проект, свой, домашний, а может и на работе. Надо его опубликовать в Интернет - задеплоить. Зашли на сервер, активировали venv, скачали новые исходники из репозитория, накатили миграции, обновили static-файлы, перезапустили, предположим, celery, перезапустили uwsgi.

И тут, поняли что забыли раскоментировать строчку в коде. Делаем коммит, снова заходим на сервер, активировали venv.... Зачем вся эта рутина с деплоем? Может есть ...

more ...


Синтаксис Python: do...while

Цикл do while отличается от цикла while тем, что в do while сначала выполняется тело цикла, а затем проверяется условие продолжения цикла. Из-за такой особенности do while называют циклом с постусловием. Таким образом, если условие do while заведомо ложное, то хотя бы один раз блок операторов в теле цикла do while выполнится.

Иииии.... такой конструкции - do...while нет в Python ...

more ...

Python проекты: интерпретатор PyPy

PyPy — это интерпретатор Python, который написан на Python (RPython) и может компилировать сам себя.

Основное отличие от обычного CPython — наличие JIT компилятора. Прелесть JIT компилятора в том, что в течении работы программы оптимизируются ее части.

Скорость исполнения кода на PyPy выше. На сайте http://speed.pypy.org/ вы можете найти сравнения CPython и PyPy. На сайте есть график (в самом ...

more ...