summaryrefslogtreecommitdiff
path: root/content/digarden/pages/20220202183614-python.org
diff options
context:
space:
mode:
Diffstat (limited to 'content/digarden/pages/20220202183614-python.org')
-rw-r--r--content/digarden/pages/20220202183614-python.org164
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