diff options
Diffstat (limited to 'content/digarden/pages/20210409071146-python.org')
-rw-r--r-- | content/digarden/pages/20210409071146-python.org | 125 |
1 files changed, 125 insertions, 0 deletions
diff --git a/content/digarden/pages/20210409071146-python.org b/content/digarden/pages/20210409071146-python.org new file mode 100644 index 0000000..f90f3ed --- /dev/null +++ b/content/digarden/pages/20210409071146-python.org @@ -0,0 +1,125 @@ +:PROPERTIES: +:ID: 2d40c870-3ea1-4065-a982-a1db1a5a69d6 +:END: +#+title: Python + +* Python +Высокоуровневый язык программирования, применяемый для широкого спектра +задач. Достаточно убог сам по себе, но исторически очень распространён (возможно +из-за влияния корпораций в частности Google). Python неплох относительно другого +мейнстрима. + +Два основных фреймворка для web: +- [[id:8ec304b0-7981-4f0a-a6ed-7b7ee27cb9d2][Django]] +- [[id:0fb97d24-aa68-43ef-ad97-731af80bcbe1][Flask]] + +Ключевые слова: +- 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/ + +[[https://python-patterns.guide][Паттерны Python]] + +Профилирование и дебаг: +- Objgraph + Рисует графы, созданных объектов +- Pympler + Показывает сколько памяти едят те или иные объекты +- Mprof + Рисует график потребления памяти с течением времени + +[[https://stackoverflow.com/questions/1113611/what-does-ruby-have-that-python-doesnt-and-vice-versa][Отличия Python и Ruby]] + +Преимущества Python: +- Есть работа +- Маленький язык (не так много лексем, 1.2 миллионов строк кода на си, openjdk например около 20) +- Хоть какая-то интерактивная разработка и интроспекция +- Есть doc-string + +Недостатки Python: +- Байткод никак не оптимизируется +- Boolean это числа -1, 0 и 1 +- Нет Multiple Dispatch (https://github.com/mrocklin/multipledispatch) + ([[https://towardsdatascience.com/the-correct-way-to-overload-functions-in-python-b11b50ca7336][Как перегружать функции в 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 + +[[https://airbrake.io/blog/python/class-hierarchy][Иерархия ошибок]] + +Видео: +- [[https://www.youtube.com/watch?v=D0vbuIDOV4c][«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС]] + +Книги: +- От лутца + + +Веб-сайты: +- https://python-scripts.com +- https://devguide.python.org/ + +https://i.stack.imgur.com/Ty2F3.png
\ No newline at end of file |