Я учусь на Python и побежал этот кусок кода в консоли питона ранее сегодня:Локальные переменные недоступны в функциях генератора?
num = 0
def generator():
while True:
yield num
num += 1
for i in generator():
if i > 5: break
print(i)
Он бросил UnboundLocalError: local variable 'num' referenced before assignment
I переписали код и эта версия работала:
def generator():
num = 0
while True:
yield num
num += 1
for i in generator():
if i > 5: break
print(i)
Мой вопрос: не можете ли вы использовать локальные переменные внутри функций генератора, как вы можете, с помощью обычных функций?
'num' не является локальным для вашей функции в коде ошибки – UnholySheep
@UnholySheep, если я определяю функцию' test() 'с' print (num) 'внутри нее и вызывается' test() 'в консоли, он печатает 0. – Vinayak
@ Винайак из принятого ответа связанного вопроса: «Если вы хотите просто получить доступ к глобальной переменной, вы просто используете ее имя. Однако для изменения ее значения вам нужно использовать глобальное ключевое слово». – Mephy