На глобальные переменные действительно можно ссылаться где угодно, но когда вы присваиваете переменную внутри функции, если только вы не укажете Python, что эта переменная является локальной переменной всей функции.Так что blanks
внутри функции не имеет отношения к blanks
вне функции.
Когда код выбирает путь else
, он пытается сослаться на локальный blanks
, но никакое значение еще не было присвоено, поэтомувы получите исключение UnboundLocalError
.
. Чтобы исправить это, вы должны сообщить Python, что присвоение внутри функции является присваиванием глобальному blanks
:
def check(word, guess):
global blanks
... rest of code
Наличиеприсваивание в любом месте внутри функции сделает эту переменную локальной в любом месте функции, если вы не используете оператор global
или nonlocal
.Не имеет значения, выполнено ли присвоение или даже выполнено ли оно:
y = 0
def foo():
return y # This is a local variable (but unbound so will error)
y = 1 # this is unreachable but still makes `y` local.