summaryrefslogtreecommitdiff
path: root/content/digarden/pages/20210409071146-python.org
blob: f90f3edc8c77045c21a7f0c4c66ff7c01bd64f05 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
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