Поиск локальной переменной Python и глобальной переменной - PullRequest
0 голосов
/ 16 мая 2018

Вот мой код:

abc=0  
def a():     
    abc+=1  
    print abc 

И когда я выполняю эту функцию:

a() 

Я получаю эту ошибку:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 2, in abc
UnboundLocalError: local variable 'abc' referenced before assignment

Я могу исправитьэта проблема, добавив global abc в функцию, но мой вопрос заключается в том, почему интерпретатор Python не может решить, если какая-то вещь не находится в локальном пространстве, а затем искать глобальный и назначать значение оттуда.

Это делает для печати глобальногопеременная в локальном пространстве, но не для назначения?

1 Ответ

0 голосов
/ 16 мая 2018

Редактировать 1: обновленный код из неправильного имени переменной и комментария.

Редактировать 2: Добавлен пример кода приращения.

Вы должны назначить переменную "abc" в функции, даже если вы назначаете какглобальная переменная.

# if assign global abc
global abc

def a(): 
    # must assign variable "abc" 
    abc = 0     
    abc += 1  
    print abc

 a()
 # print 1

Пример кода приращения.

abc = 0

def a():
    global abc
    abc = abc + 1

a()
# every times call a() plus 1 to abc.

print abc
# print 1
...