निम्नलिखित कोड को देखते हुए हल करने:अजगर चर
a = 0
def foo():
# global a
a += 1
foo()
जब चलाने के लिए, अजगर की शिकायत: UnboundLocalError: स्थानीय चर 'एक' असाइनमेंट से पहले संदर्भित
हालांकि, जब यह एक शब्दकोश है ...
a = {}
def foo():
a['bar'] = 0
foo()
यह बात ठीक है ...
कोई भी जानता है कि हम संदर्भ क्यों दे सकते हैं कोड के दूसरे हिस्से में, लेकिन पहले नहीं?
मुझे आश्चर्य है कि उन्होंने इसे 'विशेष क्विर्क' के रूप में वर्णित करने का फैसला क्यों किया? जावास्क्रिप्ट के साथ तुलना करें जहां 'a = 1' स्वचालित रूप से वैश्विक दायरे को असाइन करता है! इसके बारे में एकमात्र अच्छी बात यह है कि आप 'var a = 1' की अनुपस्थिति से कचरा कोड को तुरंत पहचान सकते हैं – aaronasterling