Генераторы в Python создают значения "на лету", без хранения всего списка в памяти.
Это делает их идеальными для работы с большими объёмами данных и потоками
def fibonacci():
a, b = 0, 1
while True:
yield a
a, b = b, a + b
gen = fibonacci()
for _ in range(5):
print(next(gen))
# 0 1 1 2 3
📌 Здесь yield превращает функцию в генератор, который "запоминает" состояние между вызовами.
Please open Telegram to view this post
VIEW IN TELEGRAM
Ответ:
Anonymous Quiz
29%
calc, 10, 99, 10
14%
10, 99, 10
29%
calc, 10, calc, 99
29%
calc, 10, 99, calc, 10
Контекстные менеджеры позволяют автоматически управлять ресурсами — открытыми файлами, соединениями, блокировками.
Они гарантируют освобождение ресурсов даже при ошибках
class Managed:
def __enter__(self):
print("Ресурс открыт")
return self
def __exit__(self, exc_type, exc_val, exc_tb):
print("Ресурс закрыт")
with Managed():
print("Работаем с ресурсом")
# Ресурс открыт
# Работаем с ресурсом
# Ресурс закрыт
📌 Метод __enter__ выполняется при входе в блок, __exit__ — при выходе, даже если возникло исключение.
Please open Telegram to view this post
VIEW IN TELEGRAM
split() в Python и когда его применять?Метод
split() разбивает строку на части по заданному разделителю и возвращает список. Это удобно для обработки текста, логов, CSV-данных и пользовательского ввода.text = "apple,banana,orange"
fruits = text.split(",")
print(fruits)
# ➜ ['apple', 'banana', 'orange']
split() удобно использовать при парсинге строк, чтении файлов, анализе данных и обработке команд. Без аргумента метод автоматически разделяет по пробелам — это особенно полезно для очистки и разбиения текста на слова
Please open Telegram to view this post
VIEW IN TELEGRAM