diff options
Diffstat (limited to 'content/digarden/pages/20220202183614-python.org')
-rw-r--r-- | content/digarden/pages/20220202183614-python.org | 164 |
1 files changed, 0 insertions, 164 deletions
diff --git a/content/digarden/pages/20220202183614-python.org b/content/digarden/pages/20220202183614-python.org deleted file mode 100644 index 16b4679..0000000 --- a/content/digarden/pages/20220202183614-python.org +++ /dev/null @@ -1,164 +0,0 @@ -:PROPERTIES: -:ID: e3725676-12e5-4e8d-a3cc-cc2c29fdee7a -:END: -#+title: Python -** Типы данных -- Numeric data types :: int, float, complex -- String data types :: str -- Sequence types :: list, tuple, range -- Binary types :: bytes, bytearray, memoryview -- Mapping data type :: dict -- Boolean type :: bool -- Set data types :: set, frozenset -** Достоинства -- Относительно простой -- Много библиотек, не ограничен одной областью применения -- Хорошая документация -- Понятные ошибки (по сравнению с PHP и Ruby) -- Поддержка репла, но инструкции и много других вещей всё портят -- Встроенный дебаггер -- Хорошая поддержка в GNU Emacs -- Всё есть объект при этом мало ООП -- Модульность из Модула-2 -- Строгая типизация -- Аннотации типов -- Хорошая проверка типов при полном указании типов -- Может компилировать в бинарник при аннотациях типов (см. mypyc) -- Есть несколько реализаций (Cpython, Cython, Pypy, Micropython и другие) -- Генерация в байткод - -** Недостатки -- Императивный; Мало ФП -- Однострочные лямбды -- Нет макросов -- Есть перегрузка только существующих операторов. Нельзя создавать новые. -- Множественное наследование -- Cpython медленные -- Аннотации типов не проверяются в рантайме -- Плохая поддержка репла -- Ад из пакетных менеджеров. Пакетный менеджер может поставить кучу - обскьюрных сишных библиотек. -- GIL. Плохая многопоточность. -- У языка нет стандарта. -- Нет стратегий сборки мусора. -- Сложный переход от python2 к python3 - -[[https://gist.github.com/RobertAKARobin/a1cba47d62c009a378121398cc5477ea][Список других недостатков Python]] - -** Ресурсы -- [[https://en.wikipedia.org/wiki/Python_syntax_and_semantics][Python syntax and semantics]] -- [[https://docs.python.org/3/glossary.html][Термины]] -- [[https://python-3-patterns-idioms-test.readthedocs.io/en/latest/index.html][Паттерны]] - -** FAQ -- [[https://docs.python.org/3/faq/programming.html][Программирование]] - -** Создание бинарника -- https://marcelotduarte.github.io/cx_Freeze/ -- https://pyinstaller.org/en/stable/ - -** Шпаргалка -[[https://github.com/ehmatthes/pcc_2e/releases/download/v1.0.1/beginners_python_cheat_sheet_pcc_all.pdf][Cheatsheet]] - -| метод | что реализует | для чего вызывается | -| __init__ | конструктор | создание объекта x=Class(args) | -| __del__ | деструктор | уничтожение объекта X | -| __add__ | операция + | X + Y, X += Y если отсутствует iadd | -| __or__ | операция OR | X | -| __repr__, str | вывод, преобразования | print(X), repr(X), str(X) | -| __call__ | вызовы функций | X(*args, **kargs) | -| __getattr__ | извлечение атрибута | X.undefined | -| __setattr__ | присваивание атрибута | X.any = value | -| __delattr__ | удаление атрибута | del X.any | -| __getarrtibute__ | извлечение атрибута | X.any | -| __getitem__ | индексация, нарезание, итерация | X[key], X[i:j], циклы for и другие если отсуствует iter | -| __setitem__ | присваивание по индексу и срез | X[key]=value, X[i:j]=iterable | -| __delitem__ | удаление по индексу или срезу | del X[key], del[i:j] | -| __len__ | длина len(X), проверки истинности если отсуствует bool | | -| __bool__ | булевские проверки | bool(X) | -| __lt__ | сравнения | X < Y | -| __gt__ | сравнения | X > Y | -| __le__ | сравнения | X <= Y | -| __ge__ | сравнения | X >= Y | -| __eq__ | сравнения | X == Y | -| __ne__ | сравнения | X != Y | -| __radd__ | правосторонние операции | other + X | -| __iadd__ | дополненные на месте операции | X += Y (либо иначе add) | -| __iter__ | итерационные контексты | I=iter(x), next(I); циклы for, in если отсуствуют contains, все включения map(F,X) | -| __next__ | итерационные контексты | см iter | -| __contains__ | проверка членства | item in X (любой итерируемый объект) | -| __index__ | целочисленное значение | hex(X), bin(X), oct(X), O(X), O[X:] | -| __enter__ | диспетчер контекста (см далее) | with obj as var: | -| __exit__ | диспетчер контекста (см далее) | | -| __get__, | set атрибуты дескриптора | X.attr, X.attr = value | -| __delete__ | атрибуты дескриптора | del X.attr | -| __new__ | создание создание объекта перед init | | - -[[https://i.redd.it/dixavkhibu351.png]] - -#+begin_src python - class foo(): - def __init__(self, kind=None): - self.kind = kind - - def __call__(self, kind=None): - return foo(kind=kind) - - def my_print(self): - print (self.kind) - - def line(self): - return self(kind='line') - def bar(self): - return self(kind='bar') - - a = foo() - a.bar().line().bar().bar().line().my_print() -#+end_src - -#+RESULTS: - - -** Примеры кода -*** Функция высшего порядка -#+begin_src python - def linear(a, b): - def result(x): - return a * x + b - return result - - return linear(2, 5)(5) -#+end_src - -#+RESULTS: -: 15 - -#+begin_src python - class linear: - - def __init__(self, a, b): - self.a, self.b = a, b - - def __call__(self, x): - return self.a * x + self.b - -p return linear(2, 5)(5) -#+end_src - -#+RESULTS: -: 15 - -** Книги -- Марк Лутз (Изучаем Python и другие) -- Python Crash Course - -** Ресурсы - -** Статьи -- [[https://beej.us/guide/bgpython/html/][Beej Guide to Python]] - -** Видео -- [[https://www.youtube.com/watch?v=rfscVS0vtbw][Туториал на 4.5 часа]] - - Источники знания: -- https://uneex.org/Python/GeoPython2021 |