source: content/digarden/pages/20210409071146-python.org@ 972a737

Last change on this file since 972a737 was 972a737, checked in by w96k <w96k@…>, on Apr 16, 2023 at 5:54:55 PM

Add logseq

  • Property mode set to 100644
File size: 4.4 KB
Line 
1:PROPERTIES:
2:ID: 2d40c870-3ea1-4065-a982-a1db1a5a69d6
3:END:
4#+title: Python
5
6* Python
7Высокоуровневый язык программирования, применяемый для широкого спектра
8задач. Достаточно убог сам по себе, но исторически очень распространён (возможно
9из-за влияния корпораций в частности Google). Python неплох относительно другого
10мейнстрима.
11
12Два основных фреймворка для web:
13- [[id:8ec304b0-7981-4f0a-a6ed-7b7ee27cb9d2][Django]]
14- [[id:0fb97d24-aa68-43ef-ad97-731af80bcbe1][Flask]]
15
16Ключевые слова:
17- and
18- as
19- assert
20- async
21- await
22- break
23- class
24- continue
25- def
26- del
27- elif
28- else
29- except
30- False
31- finally
32- for
33- from
34- global
35- if
36- import
37- in
38- is
39- lambda
40- None
41- nonlocal
42- not
43- or
44- pass
45- raise
46- return
47- True
48- try
49- while
50- with
51- yield
52
53Интерфейсы в Python:
54- Абстрактные классы с использованием @abstractMethod
55- Протоколы из MyPy
56
57Ультимативная справка по языку:
58https://gto76.github.io/python-cheatsheet/
59
60https://python.org/
61
62[[https://python-patterns.guide][Паттерны Python]]
63
64Профилирование и дебаг:
65- Objgraph
66 Рисует графы, созданных объектов
67- Pympler
68 Показывает сколько памяти едят те или иные объекты
69- Mprof
70 Рисует график потребления памяти с течением времени
71
72[[https://stackoverflow.com/questions/1113611/what-does-ruby-have-that-python-doesnt-and-vice-versa][Отличия Python и Ruby]]
73
74Преимущества Python:
75- Есть работа
76- Маленький язык (не так много лексем, 1.2 миллионов строк кода на си, openjdk например около 20)
77- Хоть какая-то интерактивная разработка и интроспекция
78- Есть doc-string
79
80Недостатки Python:
81- Байткод никак не оптимизируется
82- Boolean это числа -1, 0 и 1
83- Нет Multiple Dispatch (https://github.com/mrocklin/multipledispatch)
84 ([[https://towardsdatascience.com/the-correct-way-to-overload-functions-in-python-b11b50ca7336][Как перегружать функции в Python]])
85- Нет модификаторов доступа
86- Нет интерфейсов
87- Нет встроенной проверки типов
88- Нет стандарта
89- Низкая производительность
90- Отсутствует jar / phar
91- GIL
92- Слишком сильно отличающийся синтаксис по сравнению с C / C++ / Java
93- Множественное наследование
94- Плохая поддержка функциональной парадигмы
95- Замыкание реализовано через ООП костыль
96- Неявные сокращения в стандартной библиотеке
97- Нарушение совместимости (Python 2 => Python 3)
98- Слишком много пакетных менеджеров
99- Нет switch-case
100- Не настолько сильно переносим на другие системы как Java (особенно под
101 Windows)
102- В документации не пишет полную API функций (например не пишет какие
103 типы она конкретно принимает и возвращает), но это решается нынче
104 аннотациями типов для стандартной библиотеки.
105- 4 способа отформатировать строку
106- List comprehensions сложные для чтения (фп подход был бы понятнее)
107- Отсутствует Let
108- Есть None
109
110https://wiki.python.org/moin/PythonWarts
111
112[[https://airbrake.io/blog/python/class-hierarchy][Иерархия ошибок]]
113
114Видео:
115- [[https://www.youtube.com/watch?v=D0vbuIDOV4c][«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС]]
116
117Книги:
118- От лутца
119
120
121Веб-сайты:
122- https://python-scripts.com
123- https://devguide.python.org/
124
125https://i.stack.imgur.com/Ty2F3.png
Note: See TracBrowser for help on using the repository browser.