LINUX.ORG.RU

История изменений

Исправление tailgunner, (текущая версия) :

$ cat a1.py
def main():
    test_var
    
    def subfunc():
        global test_var
        test_var = 'check'
        
    subfunc()
    
main()

print test_var

$ python a1.py 
Traceback (most recent call last):
  File "a1.py", line 10, in <module>
    main()
  File "a1.py", line 2, in main
    test_var
NameError: global name 'test_var' is not defined

До оператора global управление вообще не доходит. Таки что ты хотел сказать? Скажи словами, а не примером кода.

Я похоже ошибался, global берёт не ближайшую в области видимости, а самую дальнюю. Это не то, что я хотел, это даже адово

Не самую дальнюю, а глобальную. Не адово, а задумано так.

Исходная версия tailgunner, :

$ cat a1.py
def main():
    test_var
    
    def subfunc():
        global test_var
        test_var = 'check'
        
    subfunc()
    
main()

print test_var

$ python a1.py 
Traceback (most recent call last):
  File "a1.py", line 10, in <module>
    main()
  File "a1.py", line 2, in main
    test_var
NameError: global name 'test_var' is not defined

До оператора global управление вообще не доходит. Таки что ты хотел сказать? Скажи словами, а не примером кода.