एलेक्स के जवाब देने के लिए जोड़ने के लिए: हालांकि जब आप स्थानीय लोगों/वैश्विक बहस वे स्थानीय लोगों और फोन करने वाले की वैश्विक के लिए डिफ़ॉल्ट, यह केवल एक को छोड़ देते हैं सुविधा हैक; यह का अर्थ है कि वे कॉलर के पूर्ण निष्पादन संदर्भ को विरासत में ले रहे हैं। विशेष रूप से:
ए। नेस्टेड स्कोप सेल execed कोड के लिए उपलब्ध नहीं हैं। तो यह विफल रहता है:
def f():
foo= 1
def g():
exec('print foo')
g()
f()
बी। global
घोषणाएं execed कोड में नहीं ले जाती हैं। तो डिफ़ॉल्ट रूप से आपके उदाहरण के रूप में, स्थानीय चर शब्दकोश में लिखित चर डाल दिया जाता है। हालांकि, आप इसे
exec('global myvar\nmyvar = "changed!"')
यदि आप इसकी सहायता कर सकते हैं तो आप वास्तव में ऐसा नहीं करना चाहते हैं। global
पहले से ही अच्छा नहीं है और exec
अपने आप में बहुत अधिक कोड गंध है! आप उन्हें तब तक गठबंधन नहीं करना चाहते हैं जब तक वास्तव में कोई विकल्प न हो।
बिल्कुल सही! धन्यवाद, यह बहुत अच्छा काम करता है। :) – linkmaster03