Friday 15 April 2011

python - Puzzling "'tuple' object does not support item assignment" error -


इस सवाल का पहले से ही एक उत्तर है: < / P>

  • 2 जवाब

    निम्नलिखित पर विचार करें:

      & gt; & gt; & gt; टी = ([],) & gt; & gt; & gt; टी [0]। एक्सटेंशन ([12, 34]) & gt; & gt; & gt; टी ([12, 34],) & gt; & gt; & gt; टी [0] + = [56, 78] ट्रेसबैक (सबसे हाल का कॉल अंतिम): फ़ाइल "& lt; stdin & gt;", पंक्ति 1, & lt; मॉड्यूल & gt; TypeError: 'ट्यूपल' ऑब्जेक्ट आइटम असाइनमेंट का समर्थन नहीं करता & gt; & gt; & gt; टी ([12, 34, 56, 78]))) gt; & gt; & gt;   

    मुझे लगता है कि ट्यूपल्स अपरिवर्तनीय हैं, लेकिन एलएचएस में आइटम एक ट्यूपल नहीं है! (तथ्य यह है कि वास्तव में इच्छित असाइनमेंट सफल हुआ, त्रुटि संदेश इसके बावजूद, पूरे परिदृश्य को केवल और अधिक विचित्र बनाता है।)

    इस व्यवहार को एक बग क्यों नहीं माना जाता?

    <पूर्व> टी [0] + = [56, 78]

      टी [0] = टी के लिए कम है [0] .__ iadd __ ([56, 78])   

    जहां t एक ट्यूपल है टी [0] .__ iadd __ ([56, 78]) भाग सूची में परिवर्तन करता है, लेकिन फिर परिणाम को t [0] के रूप में संग्रहीत नहीं किया जा सकता है।

    पायथन में एलएचएस हमेशा एक नाम है, कभी भी कोई मूल्य नहीं। प्रत्येक पायथन अभिव्यक्ति में, आरएचएस का मूल्यांकन मूल्य के लिए किया जाता है और उसे एलएचएस पर नाम दिया जाता है। इस मामले में नाम t [0] को असाइन नहीं किया जा सकता क्योंकि t एक tuple है

No comments:

Post a Comment