Por que atribuir às minhas variáveis globais não funciona em Pytho

Estou com um problema terrível tentando entender as regras de escopo do pytho

Com o seguinte script:

a = 7

def printA():
    print "Value of a is %d" % (a)

def setA(value):
    a = value
    print "Inside setA, a is now %d" %(a)


print "Before setA"
printA()
setA(42)
print "After setA"
printA()

Dá a saída inesperada (para mim) de:

    Before setA
    Value of a is 7
    Inside setA, a is now 42
    After setA
    Value of a is 7

Onde eu esperaria que a última impressão do valor de a fosse 42, não 7. O que estou perdendo nas regras de escopo do Python para o escopo das variáveis globai

questionAnswers(10)

yourAnswerToTheQuestion