Вам нужно использовать global
в любой функции, которая присваивает значение этой переменной. global
сообщает функции, что имя не находится в ее локальном пространстве имен. Когда вы просто используете переменную, python попробует локальное пространство имен, не найдет переменную, а затем вернется к глобальному пространству имен. Когда вы пытаетесь установить переменную, python не может знать, имели ли вы в виду локальную переменную с таким же именем или глобальную. Следовательно, украшение global
.
В вашем первом примере вам нужен global в function1, потому что вы назначаете переменные.
def function1():
global var1, var2
var1 = 2
var2 = 3
Вам не нужно в function2, потому что вы используете только им, вы им ничего не назначаете.
def function2():
ans = var1 + var2