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

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

Сообщение Anonymous »

У меня есть случаи использования, в которых мне нужно запускать функции-генераторы, не заботясь о возвращаемых элементах.

Я не могу сделать их негенерирующими функциями, потому что в других случаях использования мне определенно нужны полученные значения.
В настоящее время я использую тривиальную самодельную функцию для исчерпания генераторов.
def exhaust(generator):
for _ in generator:
pass

Мне интересно, есть ли более простой способ сделать это, которого мне не хватает?
Следующий вариант использования:
def create_tables(fail_silently=True):
"""Create the respective tables."""

for model in MODELS:
try:
model.create_table(fail_silently=fail_silently)
except Exception:
yield (False, model)
else:
yield (True, model)

В некотором контексте меня волнуют значения ошибки и успеха…
for success, table in create_tables():
if success:
print('Creation of table {} succeeded.'.format(table))
else:
print('Creation of table {} failed.'.format(table), file=stderr)

… а в некоторых я просто хочу запустить функцию «вслепую»:
exhaust(create_tables())


Подробнее здесь: https://stackoverflow.com/questions/474 ... bout-items
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»