mirror of
https://github.com/yakimka/python_interview_questions.git
synced 2025-12-18 20:04:35 +03:00
Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a19d2ebf06 | ||
|
|
33d7ec3d0c | ||
|
|
db9d0142b8 | ||
|
|
0b40521541 | ||
|
|
345d531fde | ||
|
|
adcaa9e332 | ||
|
|
7c45b4264c |
@@ -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/#Что-может-быть-декоратором-К-чему-может-быть-применен-декоратор)
|
||||
|
||||
40
questions.md
40
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)` – сумма элементов последовательности
|
||||
@@ -380,7 +384,7 @@ foo()
|
||||
|
||||
Интерпретатор создаёт объект «john» и «имя» var, а затем связывает объект с данным именем.
|
||||
При вызове функции, новых объектов не создаётся, вместо этого в её области видимости создаётся имя, которое связывается с существующим объектом.
|
||||
Но в python есть изменяемые и неизменяемые типы. К первым, например, относятся числа: при арифметических операциях существующие объекты не меняются, а создаётся новый объект, с которым потом связывается существующее имя. Если же со старым объектом после этого не связано ни одного имени, оно будет удалено с помощью механизма подсчёта ссылок.
|
||||
Но в python есть изменяемые и неизменяемые типы. Ко вторым, например, относятся числа: при арифметических операциях существующие объекты не меняются, а создаётся новый объект, с которым потом связывается существующее имя. Если же со старым объектом после этого не связано ни одного имени, оно будет удалено с помощью механизма подсчёта ссылок.
|
||||
Если же имя связано с переменной изменяемого типа, то при операциях с ней изменяется память объекта, соответственно все имена, связанные с данной областью памяти «увидят» изменения.
|
||||
|
||||
### Что такое замыкание
|
||||
@@ -925,9 +929,9 @@ except ZeroDivisionError:
|
||||
Базовым классом для предупреждений является Warning, который наследуется от Exception.
|
||||
Базовым классом-наследником Warning для пользовательских предупреждений является UserWarning.
|
||||
|
||||
### Для чего нужен модуль warning
|
||||
### Для чего нужен модуль warnings
|
||||
|
||||
В модуле warning собраны функции для работы с предупреждениями.
|
||||
В модуле warnings собраны функции для работы с предупреждениями.
|
||||
Основной является функция warn, которая принимает один обязательный параметр message, который может быть либо строкой-сообщением, либо экземпляром класса или подкласса Warning (в таком случае параметр category устанавливается автоматически) и два опциональных параметра: category (по умолчанию – UserWarning) – класс предупреждения и stacklevel (по умолчанию – 1) – уровень вложенности функций, начиная с которого необходимо выводить содержимое стека вызовов (полезно, например, для функций-обёрток для вывода предупреждений, где следует задать stacklevel=2, чтобы предупреждение относилось к месту вызова данной функции, а не самой функции).
|
||||
|
||||
## Декораторы
|
||||
@@ -1433,16 +1437,17 @@ import aiohttp
|
||||
urls = ['http://www.google.com', 'http://www.yandex.ru', 'http://www.python.org']
|
||||
|
||||
async def call_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_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. Во время выполнения он возвращает сопрограмму, которая затем находится в ожидании.
|
||||
@@ -1637,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 работает менеджер памяти и как эта память высвобождается.
|
||||
@@ -2194,6 +2200,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)
|
||||
|
||||
@@ -5288,7 +5296,7 @@ Pre-commit check можно использовать например так:
|
||||
|
||||
Запрос к реляционной базе данных обычно возвращает несколько рядов (записей) данных, но приложение за один раз обрабатывает лишь одну запись. Даже если оно имеет дело одновременно с несколькими рядами (например, выводит данные в форме электронных таблиц), их количество по-прежнему ограничено. Кроме того, при модификации, удалении или добавлении данных рабочей единицей является ряд. В этой ситуации на первый план выступает концепция курсора, и в таком контексте курсор – указатель на ряд.
|
||||
|
||||
Курсор в SQL – это область в памяти базы данных, которая предназначена для хранения последнего оператора SQL. Если текущий оператор – запрос к базе данных, в памяти сохраняется и строка данных запроса, называемая текущим значением, или текущей строкой курсора. Указанная область в памяти поименована и доступна для прикладных программ.
|
||||
Курсор в SQL – это область в памяти базы данных, которая предназначена для хранения последнего оператора SQL. Если текущий оператор – запрос к базе данных, в памяти сохраняется строка данных запроса, называемая текущим значением, или текущей строкой курсора. Указанная область в памяти поименована и доступна для прикладных программ.
|
||||
|
||||
Обычно курсоры используются для выбора из базы данных некоторого подмножества хранимой в ней информации. В каждый момент времени прикладной программой может быть проверена одна строка курсора. Курсоры часто применяются в операторах SQL, встроенных в написанные на языках процедурного типа прикладные программы. Некоторые из них неявно создаются сервером базы данных, в то время как другие определяются программистами.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user