Помогите пожалуйста отремонтировать скрипт.
Есть простейшая корутина. Я попытался написать к ней декоратор, который производит её инициализацию(то есть прогоняет до первого yield)
#!/usr/bin/env python3
from inspect import getgeneratorstate
def coroutine(func):
def inner(*args, **kwargs):
g = func(*args, **kwargs)
g.send(None)
return inner
@coroutine
def average():
count = 0
summ = 0
average = None
print('init')
while True:
try:
x = yield average
except StopIteration:
print('Done')
else:
count += 1
summ += x
average = round(summ / count, 2)
g = average()
print(getgeneratorstate(g))
Проблема в том, что у меня не получается вывести состояние генератора, которое обычно можно получать при помощи модуля getgeneratorstate. Сообщение об ошибке такое:
kalinin@lenovo ~/python/hello $ ./hello.py
init
Traceback (most recent call last):
File "./hello.py", line 30, in
print(getgeneratorstate(g))
File "/usr/lib/python3.5/inspect.py", line 1579, in getgeneratorstate
if generator.gi_running:
AttributeError: 'NoneType' object has no attribute 'gi_running'
LIVE DEMO здесь