Я не знаю, существует ли атрибут функции, который дает __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