🤔 Что такое генератор, декоратор, итератор в питоне?



В Python генераторы, декораторы и итераторы являются мощными инструментами, которые облегчают решение различных задач. Давайте рассмотрим каждую из этих концепций подробнее.



🚩Генератор (Generator)



Это функции, которые позволяют вам итерировать через набор данных. Они используются для создания итераторов в Python. Генераторы создаются с использованием ключевого слова yield.

def simple_generator():

yield 1

yield 2

yield 3



gen = simple_generator()



print(next(gen)) # Вывод: 1

print(next(gen)) # Вывод: 2

print(next(gen)) # Вывод: 3




🚩Декоратор (Decorator)



Это функции, которые модифицируют или расширяют поведение других функций или методов. Они часто используются для логирования, контроля доступа, измерения времени выполнения и других задач.

def my_decorator(func):

def wrapper():

print("Что-то происходит до вызова функции")

func()

print("Что-то происходит после вызова функции")

return wrapper



@my_decorator

def say_hello():

print("Hello!")



say_hello()



# Вывод:

# Что-то происходит до вызова функции

# Hello!

# Что-то происходит после вызова функции




🚩Итератор (Iterator)



Это объекты, которые позволяют перебирать (итерировать) элементы коллекции (например, списков, кортежей и т.д.). Итератор должен реализовывать методы __iter__() и __next__().

class MyIterator:

def __init__(self, limit):

self.limit = limit

self.counter = 0



def __iter__(self):

return self



def __next__(self):

if self.counter < self.limit:

self.counter += 1

return self.counter

else:

raise StopIteration



my_iter = MyIterator(3)



for num in my_iter:

print(num)



# Вывод:

# 1

# 2

# 3




🚩Сравнение и использование



🟠Генераторы

Упрощают создание итераторов. Они позволяют создать итератор с минимальными усилиями и потребляют меньше памяти, поскольку не загружают все значения сразу.



🟠Декораторы

Позволяют изменять поведение функции или метода без изменения их кода. Они часто используются для добавления кода, который выполняется до или после основной функции.



🟠Итераторы

Предоставляют интерфейс для последовательного доступа к элементам коллекции без необходимости знать внутреннюю структуру коллекции.



Ставь 👍 и забирай 📚 Базу знаний