Python Генератор не дает значение nex - PullRequest
0 голосов
/ 12 марта 2020

В настоящее время я пытаюсь разобраться с генераторами python.

Я создаю следующую простую функцию:

def simpleGeneratorFun(): 
    yield 1
    yield 2
    yield 3
    yield 4

Затем:

for value in simpleGeneratorFun(): 
    print(value)

Это логически вывод:

1
2
3
4 

Назначение их переменным, похоже, работает точно.

b = simpleGeneratorFun()
print(id(b))
c = simpleGeneratorFun()
print(id(c))

Вывод:

122357576
122356552

Затем:

print(next(b))
print(next(c))
print(next(b))
print(next(c))
print(next(b))
print(next(c))
print(next(b))
print(next(c))

Вывод:

1
1
2
2
3
3
4
4

Поэтому я решил сделать следующее:

print(id(simpleGeneratorFun()),next(simpleGeneratorFun()))
print(id(simpleGeneratorFun()),next(simpleGeneratorFun()))

Вывод:

122355912 1
122355912 1 

Странно, хотя на этот раз я вызываю точно такую ​​же функцию (обеспечивается de ID), кажется, что она не сохраняет состояние генераторов.

Следующая вещь, которую я попробовал:

print(id(simpleGeneratorFun()),next(simpleGeneratorFun()),next(simpleGeneratorFun()),next(simpleGeneratorFun()))

Вывод:

122355912 1 1 1

Но если я кодирую это:

d = simpleGeneratorFun()
print(id(d),next(d),next(d),next(d),next(d))

Вывод:

122355912 1 2 3 4

Почему это происходит? Разве он не должен продолжать серию, а не начинать заново?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...