मुझे नहीं पता कि किसी फ़ंक्शन की विशेषता है जो फ़ंक्शन __dict__के बाहरी स्थान को देता है जब यह बाहरी स्थान वैश्विक स्थान == मॉड्यूल नहीं है, जो कि फ़ंक्शन तब होता है जब फ़ंक्शन एक नेस्टेड फ़ंक्शन है, पायथन 3 में।
लेकिन पायथन 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
के निष्पादन के बाद वैश्विक बीA() संशोधित किया गया है और इसे पूरा नहीं किया जा सकता है
यदि वैश्विक नामस्थान में पहचानकर्ता b के साथ कोई वस्तु है तो ही ऐसा है