__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
。
ノタ
セドリックジュリアンの解決策には欠点があります。
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
の実行後のグローバルbA()は変更されており、そのようにしないでください。
これは、グローバル名前空間に識別子bのオブジェクトがある場合にのみ当てはまります。