Почему я получаю UnboundLocalError в функции ниже?

#python #function #variables

#питон #функция #переменные

Вопрос:

 x=23

def printer():
    
    print(x)

    x=x 1

    return x

printer()
 

Ошибка: UnboundLocalError: локальная переменная ‘x’, на которую ссылаются перед назначением

Комментарии:

1. Внутри функции вы не объявили x глобальным, и поэтому Python не может определить, имеете ли вы в виду глобальную переменную x или новую локальную переменную, также названную x.

Ответ №1:

Используйте ключевое слово global для устранения проблемы

 def printer():

    global x
    
    print(x)

    x=x 1

    return x
 

Комментарии:

1. Спасибо, это работает. Но здесь небольшое сомнение — я уже объявил и назначил переменную x = 25 перед функцией, так зачем мне здесь использовать ключевое слово global? почему я не могу получить прямой доступ? Есть ли какие-либо правила по этому поводу в python? TIA

2. Читайте о области применения python — w3schools.com/python/python_scope.asp