Этот вопрос закрыт для ответов, так как повторяет вопрос Почему так происходит?
@zlodiak

Почему из функции недоступна глобальная переменная?

Подскажите пожалуйста почему функция не выводит в консоль значение s

s = "I'm global variable"

def foo():
    print(s)
    s = 'Reset global variable'

foo()


Я предполагал, что когда интерпретатор дойдёт до строки print(s), он поймёт, что в области видимости функции foo такой переменной не существует. Следовательно начнёт искать её во внешней области видимости, но там она есть.

Однако в результате в консоль выводится следующее сообщение об ошибке:
Traceback (most recent call last):
  File "index.py", line 7, in <module>
    foo()
  File "index.py", line 4, in foo
    print(s)
UnboundLocalError: local variable 's' referenced before assignment
  • Вопрос задан
  • 105 просмотров
Ответы на вопрос 2
dimonchik2013
@dimonchik2013
non progredi est regredi
правильно предполагал

закомментируй
s = 'Reset global variable'
и все будет чики-пуки
либо global укажи

Питон для людей - иначе б в любой функции устал исключения описывать
Ответ написан
глобальные переменные - это зло, откажитесь от это поскорее
функция должна иметь входящие данные и результат, но он не обязателен
s = "I'm global variable"

def foo(s):
    print(s)
    s = 'Reset global variable'

foo(s)
Ответ написан
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы