From 7c45b4264c20d95569e682e1bfa8c19984093bcf Mon Sep 17 00:00:00 2001 From: Tony Date: Mon, 20 Feb 2023 15:56:43 +0300 Subject: [PATCH 01/11] Update questions.md (#8) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit лишняя "и" --- questions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/questions.md b/questions.md index 6c471d8..f9a883f 100644 --- a/questions.md +++ b/questions.md @@ -5288,7 +5288,7 @@ Pre-commit check можно использовать например так: Запрос к реляционной базе данных обычно возвращает несколько рядов (записей) данных, но приложение за один раз обрабатывает лишь одну запись. Даже если оно имеет дело одновременно с несколькими рядами (например, выводит данные в форме электронных таблиц), их количество по-прежнему ограничено. Кроме того, при модификации, удалении или добавлении данных рабочей единицей является ряд. В этой ситуации на первый план выступает концепция курсора, и в таком контексте курсор – указатель на ряд. -Курсор в SQL – это область в памяти базы данных, которая предназначена для хранения последнего оператора SQL. Если текущий оператор – запрос к базе данных, в памяти сохраняется и строка данных запроса, называемая текущим значением, или текущей строкой курсора. Указанная область в памяти поименована и доступна для прикладных программ. +Курсор в SQL – это область в памяти базы данных, которая предназначена для хранения последнего оператора SQL. Если текущий оператор – запрос к базе данных, в памяти сохраняется строка данных запроса, называемая текущим значением, или текущей строкой курсора. Указанная область в памяти поименована и доступна для прикладных программ. Обычно курсоры используются для выбора из базы данных некоторого подмножества хранимой в ней информации. В каждый момент времени прикладной программой может быть проверена одна строка курсора. Курсоры часто применяются в операторах SQL, встроенных в написанные на языках процедурного типа прикладные программы. Некоторые из них неявно создаются сервером базы данных, в то время как другие определяются программистами. From adcaa9e332900964367c8cbd31cf3d9419b7167f Mon Sep 17 00:00:00 2001 From: yakimka Date: Wed, 22 Feb 2023 01:23:54 +0200 Subject: [PATCH 02/11] Update questions.md (#10) --- questions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/questions.md b/questions.md index f9a883f..4a4fe2e 100644 --- a/questions.md +++ b/questions.md @@ -380,7 +380,7 @@ foo() Интерпретатор создаёт объект «john» и «имя» var, а затем связывает объект с данным именем. При вызове функции, новых объектов не создаётся, вместо этого в её области видимости создаётся имя, которое связывается с существующим объектом. -Но в python есть изменяемые и неизменяемые типы. К первым, например, относятся числа: при арифметических операциях существующие объекты не меняются, а создаётся новый объект, с которым потом связывается существующее имя. Если же со старым объектом после этого не связано ни одного имени, оно будет удалено с помощью механизма подсчёта ссылок. +Но в python есть изменяемые и неизменяемые типы. Ко вторым, например, относятся числа: при арифметических операциях существующие объекты не меняются, а создаётся новый объект, с которым потом связывается существующее имя. Если же со старым объектом после этого не связано ни одного имени, оно будет удалено с помощью механизма подсчёта ссылок. Если же имя связано с переменной изменяемого типа, то при операциях с ней изменяется память объекта, соответственно все имена, связанные с данной областью памяти «увидят» изменения. ### Что такое замыкание From 345d531fde2ead6d993850f68d509d216d5fd02c Mon Sep 17 00:00:00 2001 From: Roman Date: Wed, 21 Feb 2024 04:47:14 +0300 Subject: [PATCH 03/11] Update questions.md (#14) * Update questions.md added some possible slices for iterable objects * Update questions.md minor changes --- questions.md | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/questions.md b/questions.md index 4a4fe2e..e6bd48e 100644 --- a/questions.md +++ b/questions.md @@ -12,14 +12,18 @@ ### Какие операции поддерживают большинство последовательностей - `x in s`, `x not in s` – находится ли элемент x в последовательности s (для строк и последовательностей байтов – является ли x подстрокой s) -- `s + t` – конкатенация последовательностей +- `s + t` – конкатенация последовательностей s и t - `s * n, n * s` – конкатенация n нерекурсивных копий последовательности s - `s[i]` – i-й элемент последовательности s -- `s[i:j]` – срез последовательности s от i до j -- `s[i:j:k]` – срез последовательности s от i до j с шагом k -- `len(s)` – длина последовательности -- `min(s)` – минимальный элемент последовательности -- `max(s)` – максимальный элемент последовательности +- `s[:i]` - срез всех элементов последовательности s до i (не включая i) +- `s[i:]` - срез всех элементов последовательности s от i до последнего элемента +- `s[-i:]` - срез последних i элементов последовательности s +- `s[::-1]` - перевернуть последовательность +- `s[i:j]` – срез последовательности s от i до j (не включая j) +- `s[i:j:k]` – срез последовательности s от i до j с шагом k (не включая j) +- `len(s)` – длина последовательности s +- `min(s)` – минимальный элемент последовательности s +- `max(s)` – максимальный элемент последовательности s - `s.index(x[, i[, j]])` – индекс первого вхождения x (опционально – начиная с позиции i и до позиции j) - `s.count(x)` – общее количество вхождений x в s - `sum(s)` – сумма элементов последовательности From 0b405215412d2c12ef0cdc7296b694fb9bb267a0 Mon Sep 17 00:00:00 2001 From: Anton Romanov <43515791+warmsnow17@users.noreply.github.com> Date: Wed, 21 Feb 2024 04:48:25 +0300 Subject: [PATCH 04/11] Update questions.md (#13) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit update Что такое async/await, для чего они нужны и как их использовать --- questions.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/questions.md b/questions.md index e6bd48e..b1755ce 100644 --- a/questions.md +++ b/questions.md @@ -1437,16 +1437,17 @@ import aiohttp urls = ['http://www.google.com/', 'http://www.yandex.ru/', 'http://www.python.org/'] async def call_https://github.com/url(url): - print('Starting {}'.format(url)) - response = await aiohttp.get(url) - data = await response.text() - print('{}: {} bytes: {}'.format(url, len(data), data)) - return data + async with aiohttp.ClientSession() as session: + print('Starting {}'.format(url)) + async with session.get(url) as response: + data = await response.text() + print('{}: {} bytes: {}'.format(url, len(data), data)) + return data futures = [call_https://github.com/url(url) for url in urls] loop = asyncio.get_event_loop() -loop.run_until_complete(asyncio.wait(futures)) +loop.run_until_complete(asyncio.gather(*futures)) ``` Программа состоит из метода async. Во время выполнения он возвращает сопрограмму, которая затем находится в ожидании. From db9d0142b885a8e110701538768bd874c313326b Mon Sep 17 00:00:00 2001 From: yakimka Date: Wed, 21 Feb 2024 03:51:23 +0200 Subject: [PATCH 05/11] Add more links for design patterns (#15) --- questions.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/questions.md b/questions.md index b1755ce..f9d99fc 100644 --- a/questions.md +++ b/questions.md @@ -2199,6 +2199,8 @@ HTTPS — расширение протокола HTTP, поддерживающ - [GitHub - pkolt/design_patterns: Паттерны проектирования](https://github.com/pkolt/design_patterns) - [GitHub - faif/python-patterns: A collection of design patterns/idioms in Python](https://github.com/faif/python-patterns) - [Python Design Patterns](https://python-patterns.guide/) +- [Design Patterns in Python: A Series](https://medium.com/@amirm.lavasani/design-patterns-in-python-a-series-f502b7804ae5) +- [A Catalog For Design Patterns in Python](https://towardsdev.com/a-catalog-for-design-patterns-in-python-a1b69493c677) ### Порождающие (Creational) From 33d7ec3d0c164b070dd157012f96abd1bc00306f Mon Sep 17 00:00:00 2001 From: yakimka Date: Sun, 15 Sep 2024 16:09:37 +0300 Subject: [PATCH 06/11] Update questions.md --- questions.md | 1 + 1 file changed, 1 insertion(+) diff --git a/questions.md b/questions.md index f9d99fc..de5288a 100644 --- a/questions.md +++ b/questions.md @@ -1642,6 +1642,7 @@ class MyClass(BaseClass, metaclass=Singleton): ## Что такое garbage collector. В чём его плюсы и минусы - [Всё, что нужно знать о сборщике мусора в Python](https://habr.com/ru/post/417215/) +- [CPython Garbage Collection: The Internal Mechanics and Algorithms](https://blog.codingconfessions.com/p/cpython-garbage-collection-internals) GC (generational garbage collector) - это сборщик мусора, создавался он в первую очередь для обнаружения и удаления циклических ссылок. `gc` является встроенным в python модулем и при необходимости его можно выключить и запускать вручную (или не запускать). Чтобы понимать для чего был создан GC нужно понимать как в Python работает менеджер памяти и как эта память высвобождается. From a19d2ebf069dacaa069a4facf1ad4fdfdcd09f3c Mon Sep 17 00:00:00 2001 From: Daniel <92018069+DanyaIzm@users.noreply.github.com> Date: Sat, 26 Oct 2024 23:50:35 +0300 Subject: [PATCH 07/11] Update questions.md (#20) (#22) --- README.md | 2 +- questions.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 267aed7..64d45b9 100644 --- a/README.md +++ b/README.md @@ -128,7 +128,7 @@ + [В каких случаях можно обработать SyntaxError](questions.md/#В-каких-случаях-можно-обработать-SyntaxError) + [Можно ли создавать собственные исключения](questions.md/#Можно-ли-создавать-собственные-исключения) + [Для чего нужны предупреждения (warnings) и как создать собственное](questions.md/#Для-чего-нужны-предупреждения-warnings-и-как-создать-собственное) - + [Для чего нужен модуль warning](questions.md/#Для-чего-нужен-модуль-warning) + + [Для чего нужен модуль warnings](questions.md/#Для-чего-нужен-модуль-warnings) * [Декораторы](questions.md/#Декораторы) + [Что такое декораторы. Зачем нужны](questions.md/#Что-такое-декораторы-Зачем-нужны) + [Что может быть декоратором. К чему может быть применен декоратор](questions.md/#Что-может-быть-декоратором-К-чему-может-быть-применен-декоратор) diff --git a/questions.md b/questions.md index de5288a..7a9fc07 100644 --- a/questions.md +++ b/questions.md @@ -929,9 +929,9 @@ except ZeroDivisionError: Базовым классом для предупреждений является Warning, который наследуется от Exception. Базовым классом-наследником Warning для пользовательских предупреждений является UserWarning. -### Для чего нужен модуль warning +### Для чего нужен модуль warnings -В модуле warning собраны функции для работы с предупреждениями. +В модуле warnings собраны функции для работы с предупреждениями. Основной является функция warn, которая принимает один обязательный параметр message, который может быть либо строкой-сообщением, либо экземпляром класса или подкласса Warning (в таком случае параметр category устанавливается автоматически) и два опциональных параметра: category (по умолчанию – UserWarning) – класс предупреждения и stacklevel (по умолчанию – 1) – уровень вложенности функций, начиная с которого необходимо выводить содержимое стека вызовов (полезно, например, для функций-обёрток для вывода предупреждений, где следует задать stacklevel=2, чтобы предупреждение относилось к месту вызова данной функции, а не самой функции). ## Декораторы From ae4c5061aa750f1c5b92c64da82561cb599631cb Mon Sep 17 00:00:00 2001 From: AndreyChiz Date: Sun, 24 Nov 2024 16:06:40 +0400 Subject: [PATCH 08/11] add most common list methods (#23) --- questions.md | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/questions.md b/questions.md index 7a9fc07..4cecbad 100644 --- a/questions.md +++ b/questions.md @@ -72,7 +72,43 @@ На уровне языка отличаются тем, что в кортеж нельзя добавить или убрать элемент. На уровне интерпретатора различий нет. Обе коллекции представлены массивом указателей на структуру `PyObject`. -Для списка определены функции, которые добавляют в такой массив новый элемент, удаляют имеющийся, соединяют два массива в один. Они вызываются методами списка `.append()`, `.pop()`, `.sort()` и т.д. +Существуют специальные функции для работы со списками. Они вызываются методами списка. Ниже приведены наиболее часто используемые. + +```python +# Создаем исходный список +lst = [1, 2, 3] + +# append(x): добавляет элемент в конец списка +lst.append(4) +# Теперь lst = [1, 2, 3, 4] + +# extend(iterable): расширяет список, добавляя элементы из итерируемого объекта +lst.extend([5, 6]) +# Теперь lst = [1, 2, 3, 4, 5, 6] + +# insert(i, x): вставляет элемент x на позицию i +lst.insert(0, 'start') +# Теперь lst = ['start', 1, 2, 3, 4, 5, 6] + +# remove(x): удаляет первое вхождение элемента x +lst.remove(3) +# Теперь lst = ['start', 1, 2, 4, 5, 6] + +# pop([i]): удаляет и возвращает элемент на позиции i (по умолчанию последний) +last = lst.pop() +# last = 6, а lst = ['start', 1, 2, 4, 5] + +# sort(): сортирует список на месте +lst = [3, 1, 4, 1, 5, 9, 2] +lst.sort() +# Теперь lst = [1, 1, 2, 3, 4, 5, 9] + +# reverse(): разворачивает список на месте +lst.reverse() +# Теперь lst = [9, 5, 4, 3, 2, 1, 1] +``` + + ### Что такое диапазон From 7bd2b608a371ed99fd987fbf6a82e0f57991c34d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 16 Apr 2025 16:55:36 +0300 Subject: [PATCH 09/11] Add renovate.json (#26) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- renovate.json | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 renovate.json diff --git a/renovate.json b/renovate.json new file mode 100644 index 0000000..5db72dd --- /dev/null +++ b/renovate.json @@ -0,0 +1,6 @@ +{ + "$schema": "https://docs.renovatebot.com/renovate-schema.json", + "extends": [ + "config:recommended" + ] +} From e364d2cc9828893b488fb3f37913dbe0997ca039 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 16 Apr 2025 16:57:44 +0300 Subject: [PATCH 10/11] Update actions/checkout action to v4 (#28) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/ci-workflow.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci-workflow.yml b/.github/workflows/ci-workflow.yml index fd693ee..b43a5fa 100644 --- a/.github/workflows/ci-workflow.yml +++ b/.github/workflows/ci-workflow.yml @@ -6,7 +6,7 @@ jobs: check-toc: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Run run: make toc-check @@ -15,7 +15,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Get TAG if: startsWith(github.ref, 'refs/tags/') run: echo "TAG=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_ENV From d4e0aed6ee8a20e92375d53f11aeac0ace78d2e9 Mon Sep 17 00:00:00 2001 From: _alex <146246237+AlHudnitskii@users.noreply.github.com> Date: Sun, 14 Sep 2025 23:27:02 +0300 Subject: [PATCH 11/11] strack -> stack.md (#33) --- questions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/questions.md b/questions.md index 4cecbad..7eddbfc 100644 --- a/questions.md +++ b/questions.md @@ -4950,7 +4950,7 @@ print(quicksort([10, 5, 2, 3])) ## Очередь и стек -Очередь FIFO (first in first out), стрек LIFO (last in first out) +Очередь FIFO (first in first out), стек LIFO (last in first out) ## Дерево