yield break в Python

в соответствии с ответом на этот вопрос , yield break в C # эквивалентен return в python. в нормальном случае «возврат» действительно останавливает генератор. Но если ваша функция ничего не делает, кроме возврата, вы получите None, а не пустой итератор, который возвращается с помощью yield break в C #

def generate_nothing():
    return

for i in generate_nothing():
    print i

, вы получите TypeError: объект 'NoneType' не повторяется.но если я добавлю никогда не запускать yield до return, эта функция вернет то, что я ожидал.

def generate_nothing():
    if False: yield None
    return

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

спасибо,

50
задан Community 23 May 2017 в 02:02
поделиться