Доступ к имени и присвоение имени различны. В вашем случае вы просто получаете доступ к имени.
Если вы назначаете переменную внутри функции, эта переменная считается локальной, если вы не объявляете ее глобальной. В отсутствие этого предполагается, что он глобальный.
>>> x = 1 # global
>>> def foo():
print x # accessing it, it is global
>>> foo()
1
>>> def foo():
x = 2 # local x
print x
>>> x # global x
1
>>> foo() # prints local x
2