Как написать функцию генератора Python, которая никогда ничего не дает - PullRequest
27 голосов
/ 07 июня 2011

Я хочу написать функцию генератора Python, которая на самом деле никогда ничего не дает.По сути, это вставка «ничего не делать», которая может использоваться другим кодом, который ожидает вызова генератора (но не всегда требует результатов из него).Пока у меня есть это:

def empty_generator():
    # ... do some stuff, but don't yield anything
    if False:
        yield

Теперь, это работает хорошо, но мне интересно, есть ли более выразительный способ сказать то же самое, то есть объявить функцию генератором, даже еслиэто никогда не приносит никакой ценности.Уловка, которую я использовал выше, состоит в том, чтобы показать Python оператор yield внутри моей функции, даже если он недоступен.

Ответы [ 3 ]

33 голосов
/ 07 июня 2011

Другой способ -

def empty_generator():
    return
    yield

Не совсем "более выразительный", но более короткий.:)

Обратите внимание, что iter([]) или просто [] тоже подойдет.

15 голосов
/ 26 апреля 2016

Еще более короткое решение:

def empty_generator():
  yield from []
1 голос
/ 07 июня 2011

Изменить:

Это не работает - читать комментарии


ты не можешь просто yield None? Кажется, мне было бы легче читать.

...