summaryrefslogtreecommitdiff
path: root/content/digarden/pages/20210409071146-python.org
diff options
context:
space:
mode:
Diffstat (limited to 'content/digarden/pages/20210409071146-python.org')
-rw-r--r--content/digarden/pages/20210409071146-python.org125
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