2017-02-06 2 views
0

Почему это не работает в python ?, где я могу получить доступ к охватывающей области (здесь глобальная область), когда нет других ссылок на одну и ту же переменную, но не может, когда они есть.python scoping and run order in building namespace

Рассматривает ли интерпретатор далее функцию сначала перед определением переменной, считает ли она, что это только локальная переменная, которой еще не присвоено значение? Каков порядок выполнения интерпретатора здесь?

> a = 5 
> a 
Out[3]: 
5 
> def closure(): 
    print(a) 

> closure() 
5 
> def closure(): 
    print(a) 
    a = "another" 
    return a 
> closure() 

UnboundLocalError: local variable 'a' referenced before assignment 

ответ

0

Добавить global a в первую строку функции.