source: content/digarden/pages/20220202183614-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: 10.3 KB
Line 
1:PROPERTIES:
2:ID: e3725676-12e5-4e8d-a3cc-cc2c29fdee7a
3:END:
4#+title: Python
5** Типы данных
6- Numeric data types :: int, float, complex
7- String data types :: str
8- Sequence types :: list, tuple, range
9- Binary types :: bytes, bytearray, memoryview
10- Mapping data type :: dict
11- Boolean type :: bool
12- Set data types :: set, frozenset
13** Достоинства
14- Относительно простой
15- Много библиотек, не ограничен одной областью применения
16- Хорошая документация
17- Понятные ошибки (по сравнению с PHP и Ruby)
18- Поддержка репла, но инструкции и много других вещей всё портят
19- Встроенный дебаггер
20- Хорошая поддержка в GNU Emacs
21- Всё есть объект при этом мало ООП
22- Модульность из Модула-2
23- Строгая типизация
24- Аннотации типов
25- Хорошая проверка типов при полном указании типов
26- Может компилировать в бинарник при аннотациях типов (см. mypyc)
27- Есть несколько реализаций (Cpython, Cython, Pypy, Micropython и другие)
28- Генерация в байткод
29
30** Недостатки
31- Императивный; Мало ФП
32- Однострочные лямбды
33- Нет макросов
34- Есть перегрузка только существующих операторов. Нельзя создавать новые.
35- Множественное наследование
36- Cpython медленные
37- Аннотации типов не проверяются в рантайме
38- Плохая поддержка репла
39- Ад из пакетных менеджеров. Пакетный менеджер может поставить кучу
40 обскьюрных сишных библиотек.
41- GIL. Плохая многопоточность.
42- У языка нет стандарта.
43- Нет стратегий сборки мусора.
44- Сложный переход от python2 к python3
45
46[[https://gist.github.com/RobertAKARobin/a1cba47d62c009a378121398cc5477ea][Список других недостатков Python]]
47
48** Ресурсы
49- [[https://en.wikipedia.org/wiki/Python_syntax_and_semantics][Python syntax and semantics]]
50- [[https://docs.python.org/3/glossary.html][Термины]]
51- [[https://python-3-patterns-idioms-test.readthedocs.io/en/latest/index.html][Паттерны]]
52
53** FAQ
54- [[https://docs.python.org/3/faq/programming.html][Программирование]]
55
56** Создание бинарника
57- https://marcelotduarte.github.io/cx_Freeze/
58- https://pyinstaller.org/en/stable/
59
60** Шпаргалка
61[[https://github.com/ehmatthes/pcc_2e/releases/download/v1.0.1/beginners_python_cheat_sheet_pcc_all.pdf][Cheatsheet]]
62
63| метод | что реализует | для чего вызывается |
64| __init__ | конструктор | создание объекта x=Class(args) |
65| __del__ | деструктор | уничтожение объекта X |
66| __add__ | операция + | X + Y, X += Y если отсутствует iadd |
67| __or__ | операция OR | X |
68| __repr__, str | вывод, преобразования | print(X), repr(X), str(X) |
69| __call__ | вызовы функций | X(*args, **kargs) |
70| __getattr__ | извлечение атрибута | X.undefined |
71| __setattr__ | присваивание атрибута | X.any = value |
72| __delattr__ | удаление атрибута | del X.any |
73| __getarrtibute__ | извлечение атрибута | X.any |
74| __getitem__ | индексация, нарезание, итерация | X[key], X[i:j], циклы for и другие если отсуствует iter |
75| __setitem__ | присваивание по индексу и срез | X[key]=value, X[i:j]=iterable |
76| __delitem__ | удаление по индексу или срезу | del X[key], del[i:j] |
77| __len__ | длина len(X), проверки истинности если отсуствует bool | |
78| __bool__ | булевские проверки | bool(X) |
79| __lt__ | сравнения | X < Y |
80| __gt__ | сравнения | X > Y |
81| __le__ | сравнения | X <= Y |
82| __ge__ | сравнения | X >= Y |
83| __eq__ | сравнения | X == Y |
84| __ne__ | сравнения | X != Y |
85| __radd__ | правосторонние операции | other + X |
86| __iadd__ | дополненные на месте операции | X += Y (либо иначе add) |
87| __iter__ | итерационные контексты | I=iter(x), next(I); циклы for, in если отсуствуют contains, все включения map(F,X) |
88| __next__ | итерационные контексты | см iter |
89| __contains__ | проверка членства | item in X (любой итерируемый объект) |
90| __index__ | целочисленное значение | hex(X), bin(X), oct(X), O(X), O[X:] |
91| __enter__ | диспетчер контекста (см далее) | with obj as var: |
92| __exit__ | диспетчер контекста (см далее) | |
93| __get__, | set атрибуты дескриптора | X.attr, X.attr = value |
94| __delete__ | атрибуты дескриптора | del X.attr |
95| __new__ | создание создание объекта перед init | |
96
97[[https://i.redd.it/dixavkhibu351.png]]
98
99#+begin_src python
100 class foo():
101 def __init__(self, kind=None):
102 self.kind = kind
103
104 def __call__(self, kind=None):
105 return foo(kind=kind)
106
107 def my_print(self):
108 print (self.kind)
109
110 def line(self):
111 return self(kind='line')
112 def bar(self):
113 return self(kind='bar')
114
115 a = foo()
116 a.bar().line().bar().bar().line().my_print()
117#+end_src
118
119#+RESULTS:
120
121
122** Примеры кода
123*** Функция высшего порядка
124#+begin_src python
125 def linear(a, b):
126 def result(x):
127 return a * x + b
128 return result
129
130 return linear(2, 5)(5)
131#+end_src
132
133#+RESULTS:
134: 15
135
136#+begin_src python
137 class linear:
138
139 def __init__(self, a, b):
140 self.a, self.b = a, b
141
142 def __call__(self, x):
143 return self.a * x + self.b
144
145p return linear(2, 5)(5)
146#+end_src
147
148#+RESULTS:
149: 15
150
151** Книги
152- Марк Лутз (Изучаем Python и другие)
153- Python Crash Course
154
155** Ресурсы
156
157** Статьи
158- [[https://beej.us/guide/bgpython/html/][Beej Guide to Python]]
159
160** Видео
161- [[https://www.youtube.com/watch?v=rfscVS0vtbw][Туториал на 4.5 часа]]
162
163 Источники знания:
164- https://uneex.org/Python/GeoPython2021
Note: See TracBrowser for help on using the repository browser.