से डॉक्स :
उलट ( seq )
एक उलटा लौटाओ iterator। seq एक ऑब्जेक्ट होना चाहिए जिसमें एक __reversed__()विधि है या अनुक्रम प्रोटोकॉल का समर्थन करता है ( __len__()विधि और __getitem__()पूर्णांक तर्कों के साथ विधि 0 से शुरू होती है)।
कोई dictऑब्जेक्ट कार्यान्वित नहीं होता है __reversed__। यह बाद के दोनों तरीकों को लागू करता है। हालाँकि, __getitem__पूर्णांक के बजाय तर्क के रूप में कुंजी लेता है (0 पर शुरू)।
क्यों, यह पहले से ही यहां पर सुझाव दिया गया है और चर्चा की गई है ।
संपादित करें:
ये उद्धरण पायथन-देव मेलिंग सूची से हैं (सूत्र "तानाशाही के लिए __reversed__ तरीके जोड़ें", 25 से शुरू हुआ। 05. 18), मैं "वैचारिक" तर्कों के साथ शुरू करूंगा, पहले एक एंटोनी पिट्रू से है:
यह कुछ भी नहीं लायक है कि ऑर्डरडीडक्ट पहले से ही उलट () का समर्थन करता है। तर्क दोनों तरीकों से जा सकता है:
तानाशाह आजकल ऑर्डरडीक के समान है, इसलिए इसे उल्टा () भी समर्थन करना चाहिए;
आप ऑर्डर करने के लिए ऑर्डर करने के बारे में स्पष्ट रूप से संकेत देने के लिए ऑर्डरडीडक्ट का उपयोग कर सकते हैं; तानाशाही में कुछ जोड़ने की जरूरत नहीं।
मेरा विचार यह है कि नियमित डक्ट्स के लिए गारंटीकृत प्रविष्टि आदेश एकदम नया है, इसलिए यह धारणा के निपटान में थोड़ा समय लगेगा और डिकेट्स के बारे में रोजमर्रा की सोच का हिस्सा बन जाएगा। एक बार ऐसा होने के बाद, यह संभवतः अपरिहार्य है कि उपयोग के मामले सामने आएंगे और __reversed__ कुछ बिंदु पर जुड़ जाएगा। कार्यान्वयन सीधा लगता है और यह उम्मीद करने के लिए एक वैचारिक छलांग नहीं है कि एक परिमित आदेश संग्रह प्रतिवर्ती होगा।
रेमंड हेटिंगर के जवाब के बाद:
यह देखते हुए कि डक्ट्स अब प्रविष्टि आदेश को ट्रैक करते हैं, यह सबसे हालिया सम्मिलन (यानी एक कार्य में सबसे हाल ही में जोड़े गए कार्यों पर लूपिंग) को जानना चाहता है। अन्य संभावित उपयोग के मामलों की संभावना होगी कि हम यूनिक्स पूंछ कमांड का उपयोग कैसे करें।
यदि उन उपयोग के मामले सामने आते हैं, तो __reversed__ को पहले से ही समर्थित होने के लिए अच्छा होगा ताकि लोग पॉपिटेम () कॉल का उपयोग करके एक बदसूरत वर्कअराउंड को लागू करने के लिए लुभा न सकें।
मेलिंग लिस्ट में मुख्य चिंता यह थी कि इससे बहुत अधिक ब्लोट जुड़ जाएगा या कम से कम कुछ कार्यान्वयन में मेमोरी दक्षता (एकल लिंक किए गए लोगों की बजाय दोगुनी लिंक की गई सूची) को कम करने के लिए, यहाँ पायथिया बग ट्रैकर से इनाडा नोकी की बोली ( अंक 33462) ):
"एक आदेश है" का अर्थ "प्रतिवर्ती" नहीं है। उदाहरण के लिए, एकल लिंक्ड सूची का आदेश दिया गया है, लेकिन प्रतिवर्ती नहीं।
जबकि सीपीथॉन कार्यान्वयन कुशल प्रदान कर सकता है __reverse__, __reverse__इसका मतलब है कि सभी पायथन कार्यान्वयन इसे प्रदान करने की उम्मीद है। उदाहरण के लिए, कुछ पायथन कार्यान्वयन होशमैप + एकल लिंक की गई सूची के साथ बड़े पैमाने पर लागू करने में सक्षम हो सकते हैं। अगर __reverse__जोड़ा जाता है, तो यह अब संभव नहीं है।
मेलिंग सूची पर वापस, यहाँ दो अंतिम संदेश हैं (दोनों 08.06.2018 को पोस्ट किए गए हैं)। पहले माइकल सेलिक से है:
क्या मैं यह कहने में सही हूं कि आम सहमति v3.8 में शामिल करने के लिए +1 है?
धागे में अंतिम बिंदु ईनाडा नोकी था जिसने विभिन्न कार्यान्वयनों पर शोध किया और निर्णय लिया कि इस सुविधा को 3.8 में शामिल करना ठीक है। जैसा कि मैं इसे समझता हूं, गुइडो ने माइक्रोएथन के v3.7 के कार्यान्वयन की प्रतीक्षा करने के लिए ईनाडा की सलाह के साथ समझौता किया था। जब से आईएनएडीए ने मन बदला है, मैं अनुमान लगा रहा हूं कि यह सब पक्ष में है?
गुइडो वैन रोसुम के संदेश के साथ समापन:
यह मुझे सही लगता है। फिर हमारे पास दो संस्करण होंगे जहां यह मामला था:
3.6 जहां ऑर्डर संरक्षण को सीपीथॉन में लागू किया गया था, लेकिन भाषा की कल्पना में
३. it जहाँ इसे भाषा की युक्ति से भी जोड़ा गया था
जैसा कि अन्य उत्तर और टिप्पणियों में उल्लेख किया गया है, reversed()संस्करण 3.8 (14.10.2018) के बाद से डिक्ट्स और तानाशाही दोनों के लिए समर्थित है।
dictवस्तु पर कोई आदेश नहीं था (कम से कम भाषा से गारंटी नहीं है) इसलिएreversedभी कोई मतलब नहीं था