Como o operador de vírgula do Python funciona durante a atribuição?

Eu estava lendo as instruções de atribuição nos documentos do Python (http://docs.python.org/reference/simple_stmts.html#assignment-statements ).

Em que é citado que:

Se o destino for uma lista de alvos entre parênteses ou entre colchetes: O objeto deve ser iterável com o mesmo número de itens que existem alvos na lista de alvos, e seus itens são atribuídos, da esquerda para a direita, ao correspondente alvos.

Depois de ler, pensei em escrever uma amostra como esta:

a = 5
b = 4
a, b = a + b, a
print a, b

Minha suposição era que a e b ambos deveriam ter o valor de 9.

No entanto, estou provado errado. 'a' tem o valor de 9 e 'b' tem o valor de 5.

Alguém pode me ajudar a entender isso melhor? Por que o valor mais antigo de 'a' é atribuído em vez do novo? De acordo com os documentos, o valor de a será atribuído primeiro à direita? Estou esquecendo de algo?

questionAnswers(3)

yourAnswerToTheQuestion