Я не знаю, есть ли у функции атрибут, который дает значение __dict__внешнего пространства функции, когда это внешнее пространство не является глобальным пространством == модуль, что имеет место, когда функция является вложенной функцией, в Python 3.
Но в Python 2, насколько мне известно, такого атрибута нет.
Итак, единственные возможности делать то, что вы хотите:
1) использование изменяемого объекта, как говорят другие
2)
def A() :
b = 1
print 'b before B() ==', b
def B() :
b = 10
print 'b ==', b
return b
b = B()
print 'b after B() ==', b
A()
результат
b before B() == 1
b == 10
b after B() == 10
.
Nota
У решения Седрика Жюльена есть недостаток:
def A() :
global b # N1
b = 1
print ' b in function B before executing C() :', b
def B() :
global b # N2
print ' b in function B before assigning b = 2 :', b
b = 2
print ' b in function B after assigning b = 2 :', b
B()
print ' b in function A , after execution of B()', b
b = 450
print 'global b , before execution of A() :', b
A()
print 'global b , after execution of A() :', b
результат
global b , before execution of A() : 450
b in function B before executing B() : 1
b in function B before assigning b = 2 : 1
b in function B after assigning b = 2 : 2
b in function A , after execution of B() 2
global b , after execution of A() : 2
Глобальный b после выполненияA() был изменен, и это может быть нежелательно
Это так, только если в глобальном пространстве имен есть объект с идентификатором b.