यह प्रश्न PEP 448
-- Additional Unpacking Generalizations से उत्पन्न होते हैं और पाइथन 3.5 में मौजूद हैं, जहां तक मुझे पता है (और 2.x
पर बैक-पोर्ट नहीं किया गया है)। विशेष रूप से, खंड नुकसान में, निम्नलिखित का उल्लेख किया जाता है:स्टार * ऑपरेटर एक असाइनमेंट स्टेटमेंट के बाएं बनाम दाहिने तरफ
जबकि
*elements, = iterable
कारणोंelements
एकlist
,elements = *iterable
होने के लिए,elements
का कारण बनता है एकtuple
किया जाना है। इसका कारण लोगों को निर्माण से अपरिचित लोगों को भ्रमित कर सकता है।
कौन वास्तव में iterable = [1, 2, 3, 4]
के लिए पकड़ है,, पहले मामले पैदावार एक list
:
>>> *elements, = iterable
>>> elements
[1, 2, 3, 4]
जबकि दूसरे मामले में एक tuple
बनाई गई है के लिए:
>>> elements = *iterable,
>>> elements
(1, 2, 3, 4)
अवधारणा के साथ अपरिचित होने के नाते , मैं उलझन में हूं। क्या कोई इस व्यवहार को समझा सकता है? क्या तारांकित अभिव्यक्ति अलग-अलग पक्ष के आधार पर कार्य करती है?