Sobes.tech
Middle
40

Worin besteht der Unterschied zwischen einem Dekorator und einem Generator? Wann sollte man einen Generator anstelle einer Liste verwenden?

Unternehmen wurden gefragt
СБЕРСБЕР

Antwort von AI

sobes.tech KI

Декоратор — это функция, которая принимает другую функцию и возвращает новую функцию с расширенным поведением, не изменяя исходный код.

Генератор — это функция, которая возвращает итератор и позволяет поэтапно выдавать значения с помощью ключевого слова yield.

Когда использовать генератор вместо списка:

  • Если нужно обрабатывать большие объемы данных, чтобы не загружать всю коллекцию в память.
  • Когда важна ленивость вычислений — значения генерируются по мере необходимости.

Пример генератора:

def count_up_to(n):
    count = 1
    while count <= n:
        yield count
        count += 1

for number in count_up_to(5):
    print(number)

Декоратор пример:

def decorator(func):
    def wrapper():
        print("Перед вызовом функции")
        func()
        print("После вызова функции")
    return wrapper

@decorator
def say_hello():
    print("Привет")

say_hello()