Why does this function print a Linked List backwards?
===

I'm working through Downey's How To Think Like a Computer Scientist and I have a question regarding his  print_backward() function for Linked Lists.(http://cs.nyu.edu/courses/fall12/CSCI-UA.0002-006/misc/httlacs.pdf)  

First, here's Downey's implementation of a Linked List in Python:

     class Node:
         #initialize with cargo (stores the value of the node)
         #and the link (set to next). These are set to 
         #None initially.
         def __init__(self, cargo = None, next = None):
             self.cargo = cargo
             self.next = next
        
        
         def __str__(self):
             return str(self.cargo)
    
We give this class the following cargo and link values:

     #cargo
     node1 = Node('a')
     node2 = Node('b')
     node3 = Node('c')
     #link them 
     node1.next = node2
     node2.next = node3

To print the linked list, we use another of Downey's functions.

    def printList(node):
         while node:
             print node,
             node = node.next

     >>>printList(node1)
     >>>a b c

All very straightforward. But I don't understand how the recursive call in the following function allows one to print the linked list backwards.

    def print_backward(list):
         if list == None : return
         print_backward(list.next)
         print list,

    >>>print_backward(node1)
    >>>c b a

Wouldn't calling "list.next" as the value of print_backward simply give you "b c"?  
