निम्नलिखित कोड नाम दिया (एक दुभाषिया में सीधे नहीं है, लेकिन फाइल के रूप में निष्पादित)मिश्रण वैश्विक/मापदंडों और समारोह 'शीर्ष'
def top(deck):
pass
def b():
global deck
साथ अजीब अजगर व्यवहार पर त्रुटि
SyntaxError: name 'deck' is local and global
का उत्पादन python2.6.4 और
SyntaxError: name 'deck' is parameter and global
अजगर पर 3.1
python2.4 इस कोड को स्वीकार करने के लिए प्रतीत होता है, तो 2.6.4 इंटरैक्टिव दुभाषिया है।
यह पहले से ही विषम है; 'डेक' विरोधाभासी क्यों है यदि यह एक विधि में वैश्विक है और दूसरे में पैरामीटर है?
लेकिन यह वीडर हो जाता है। मूल रूप से किसी अन्य चीज़ के लिए 'शीर्ष' का नाम बदलें, और समस्या गायब हो जाती है।
क्या कोई इस व्यवहार को समझा सकता है? मुझे लगता है कि मैं यहाँ कुछ बहुत याद कर रहा हूँ। क्या नाम 'शीर्ष' किसी भी तरह से कुछ स्कोपिंग आंतरिक को प्रभावित करता है?
अद्यतन
यह वास्तव में अजगर कोर में एक बग प्रतीत होता है। I have filed a bug report।
एफडब्ल्यूआईडब्ल्यू, मैं 2.6.5 और 3.1.2 में इस व्यवहार की पुष्टि कर सकता हूं। – aaronasterling
हाँ, 2.5.2 – shylent
में 'प्रिंट टॉप' उपज जोड़ना 'नाम' शीर्ष 'परिभाषित नहीं किया गया है ", इसलिए कम से कम यह कोई फ़ंक्शन या कुछ नहीं है। अजीब। –