c+=1
присваивает c
, python предполагает, что назначенные переменные являются локальными, но в этом случае он не был объявлен локально.
Либо используйте ключевые слова global
или nonlocal
.
nonlocal
работает только в python 3, поэтому, если вы используете python 2 и не хотите, чтобы ваша переменная была глобальной, вы можете использовать изменяемый объект:
my_variables = { # a mutable object
'c': 3
}
def test():
my_variables['c'] +=1
test()