Table of Contents

Python

Высокоуровневый язык программирования, применяемый для широкого спектра задач. Достаточно убог сам по себе, но исторически очень распространён (возможно из-за влияния корпораций в частности Google). Python неплох относительно другого мейнстрима.

Два основных фреймворка для web:

Ключевые слова:

  • and
  • as
  • assert
  • async
  • await
  • break
  • class
  • continue
  • def
  • del
  • elif
  • else
  • except
  • False
  • finally
  • for
  • from
  • global
  • if
  • import
  • in
  • is
  • lambda
  • None
  • nonlocal
  • not
  • or
  • pass
  • raise
  • return
  • True
  • try
  • while
  • with
  • yield

Интерфейсы в Python:

  • Абстрактные классы с использованием @abstractMethod
  • Протоколы из MyPy

Ультимативная справка по языку: https://gto76.github.io/python-cheatsheet/

https://python.org/

Паттерны Python

Профилирование и дебаг:

  • Objgraph Рисует графы, созданных объектов
  • Pympler Показывает сколько памяти едят те или иные объекты
  • Mprof Рисует график потребления памяти с течением времени

Отличия Python и Ruby

Преимущества Python:

  • Есть работа
  • Маленький язык (не так много лексем, 1.2 миллионов строк кода на си, openjdk например около 20)
  • Хоть какая-то интерактивная разработка и интроспекция
  • Есть doc-string

Недостатки Python:

  • Байткод никак не оптимизируется
  • Boolean это числа -1, 0 и 1
  • Нет Multiple Dispatch (https://github.com/mrocklin/multipledispatch) (Как перегружать функции в Python)
  • Нет модификаторов доступа
  • Нет интерфейсов
  • Нет встроенной проверки типов
  • Нет стандарта
  • Низкая производительность
  • Отсутствует jar / phar
  • GIL
  • Слишком сильно отличающийся синтаксис по сравнению с C / C++ / Java
  • Множественное наследование
  • Плохая поддержка функциональной парадигмы
  • Замыкание реализовано через ООП костыль
  • Неявные сокращения в стандартной библиотеке
  • Нарушение совместимости (Python 2 => Python 3)
  • Слишком много пакетных менеджеров
  • Нет switch-case
  • Не настолько сильно переносим на другие системы как Java (особенно под Windows)
  • В документации не пишет полную API функций (например не пишет какие типы она конкретно принимает и возвращает), но это решается нынче аннотациями типов для стандартной библиотеки.
  • 4 способа отформатировать строку
  • List comprehensions сложные для чтения (фп подход был бы понятнее)
  • Отсутствует Let
  • Есть None

https://wiki.python.org/moin/PythonWarts

Иерархия ошибок

Видео:

Книги:

  • От лутца

Веб-сайты:

Ty2F3.png

w96k Ⓐ 2019-2022

2022-10-16 Sun 19:30