← Все вопросы
NameError при использовании переменной из другой функции — почему не видит?
5
У меня переменная создаётся в одной функции, а в другой питон говорит NameError: name 'total' is not defined:
def calc():
total = 100
def show():
print(total)
calc()
show()
Я же объявил total, почему show() его не видит?
1 ответ
10
✓ Принятый ответ — помог автору
Переменная total живёт только внутри функции calc, где её создали — это называется локальная область видимости. Снаружи и в других функциях её просто не существует, поэтому show() ловит NameError.
Правильный путь — не делиться переменными через "воздух", а возвращать и передавать значение:
def calc():
return 100
def show(total):
print(total)
show(calc())
Так функция calc отдаёт результат, а show его принимает аргументом. Это надёжнее любых глобальных переменных.
Ваш ответ
Войдите, чтобы ответить на вопрос.