source: content/digarden/20210409071146-python.org@ eb2627e

Last change on this file since eb2627e was eb2627e, checked in by w96k <w96k.ru@…>, on Oct 11, 2022 at 11:50:11 AM

Add Zettelkasten notes as Digital Garden

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