Modifique as variáveis ​​de função da função interna em python

Não há problema em obter e imprimir a variável de função externaa

def outer():
    a = 1
    def inner():
        print a

Também é ok para obter o array de funções externasa e acrescente algo

def outer():
    a = []
    def inner():
        a.append(1)
        print a

No entanto, causou alguns problemas quando tentei aumentar o número inteiro:

def outer():
    a = 1
    def inner():
        a += 1 #or a = a + 1
        print a

>> UnboundLocalError: local variable 'a' referenced before assignment

Por que isso acontece e como posso alcançar meu objetivo (aumentar o número inteiro)?

questionAnswers(3)

yourAnswerToTheQuestion