2014-11-14 2 views
-2

Эй, я работаю над программой, для которой требуется цикл день/ночь. Вот функция, которую я сделал, чтобы получить его, чтобы начать работать:Python функция генератора путаница

def epoch(): 
    for i in range(0,varb.run_number): 
     print("it is now day") 
     epoch_state = 1 
     yield epoch_state 
     time.sleep(varb.day_night_length) 
     print("it is now night") 
     epoch_state = 0 
     yield epoch_state 
     time.sleep(varb.day_night_length) 

Я не могу найти ничего плохого с ним, но когда я называю это я получаю это:

<generator object epoch at 0x01036670> 

Любые идеи о том, как почини это?

P.S. Идея здесь заключается в том, чтобы запустить цикл при распечатке состояния и возврате состояния

P.P.S. ничего с varb. является глобальным с несущественным численным значением

+2

Это не ошибка. Вы создали генераторную функцию ... –

+0

теперь перебираем ее – Hackaholic

+0

OK, как я могу изменить свой код, чтобы сделать то, что мне нужно? – unknown

ответ

0

Здесь нет ошибки. Функция работает правильно.

Вы создали функцию генератора , используя выражения yield. Теперь вам нужно перебрать ваш генератор. Пока вы это сделаете, генератор приостановлен.

Вы можете использовать list() для этого:

result = list(epoch()) 

или for петля:

for result in epoch(): 
    print(result) 
+0

Будет ли 'result = list (epoch()) запускать цикл, который находится в функции? – unknown

+0

@unknown: да, он запустит весь код. –