मैं अजगर-देव अभिलेखागार पर क्या मिल सकता के आधार पर, यह सिर्फ अपने स्वयं के दिशा निर्देशों का पालन नहीं devs के एक मामला है: OrderedDict
और defaultdict
दुभाषिया से ही दोनों माना वर्ग हैं।
गुइडो वास्तव में renaming defaultdict
to DefaultDict
सुझाव पीईपी की चर्चा है कि OrderedDict
पेश किया दौरान यह असंगति ठीक करने के लिए:
वैसे भी, ऐसा लगता है विशेष रूप से संग्रह मॉड्यूल पहले से ही आंतरिक रूप से असंगत है - NamedTuple
बनाम defaultdict
। एक अर्थ में डिफॉल्टडिक्ट यहां अजीब है, क्योंकि ये कुछ मॉड्यूल से आयात करते हैं, वे अंतर्निहित नहीं हैं। शायद इसका नाम बदलकर NamedDict
कर दिया जाना चाहिए?
ध्यान दें कि NamedDict
गलत वर्तनी, he meant DefaultDict
है:
> मुझे लगता है कि आप "DefaultDict" मतलब है।
हां, मैं विचलित हो गया हूं। :-(
मुझे यकीन है कि यह परिवर्तन क्यों (और अन्य मॉड्यूलों की इसी तरह के परिवर्तन, जैसे socket.socket
, datetime.datetime
), बनाया कभी नहीं किया गया था के बाद से गुइडो यह कर समर्थित नहीं हूँ।
विडंबना यह है कि
, (या शायद एलेक्स मार्टेली) जो नाम defaultdict
के साथ आया था, तथ्य यह है कि वे एक आंतरिक वर्ग गूगल का उपयोग करते हुए DefaultDict
बुलाया गया था पर यह आधारित थे के बावजूद:
गूगल एक DefaultDict
कहा जाता है एक आंतरिक डेटा प्रकार जो 012,351,641 हो जाता हैनिर्माण पर एक डिफ़ॉल्ट मूल्य पारित किया। __getitem__
विधि, KeyError
बढ़ाने के बजाय, दिए गए डिफ़ॉल्ट मान को मान में नहीं मिलता है जब मान नहीं मिलता है।
... स्निप ...
एलेक्स मार्टेली साथ दोपहर के भोजन के दौरान उन्होंने प्रस्ताव किया कि इस व्यवहार के साथ dict का एक उपवर्ग (लेकिन सी में लागू) भाषा के लिए एक अच्छा इसके अतिरिक्त होगा। ऐसा लगता है कि इसे लागू करना मुश्किल नहीं होगा।यह defaultdict
नामित अंतर्निहित हो सकता है। कन्स्ट्रक्टर को पहला, आवश्यक, तर्क डिफ़ॉल्ट मान होना चाहिए। शेष तर्क (यहां तक कि कीवर्ड तर्क) को कन्स्ट्रक्टर के लिए अपरिवर्तित किया गया है।
चर्चा जल्दी से किया जा रहा है defaultdict
से चले गए एक अंतर्निहित यह collections
मॉड्यूल का हिस्सा होने के लिए, लेकिन सभी लोअरकेस नाम अटक गया है। यह चर्चा 2006 में हुई थी, इसलिए पीईपी 8 तब तक कई सालों से आसपास रहा था। निश्चित नहीं है कि यह किसी के लिए कभी क्यों नहीं हुआ था कि उस समय इसे DefaultDict
नाम दिया जाना चाहिए।
"अब जब कि वर्गों और प्रकार एकीकृत किए जाने की अपेक्षा की जाती है, सी प्रकार के लिए अजगर वर्गों के लिए केमलकेस और लोअरकेस के बीच अंतर frustratingly अजीब है।" - चिह्नित डुप्लिकेट में एक टिप्पणी से उपयोगकर्ता 2357112। – user2864740
आपके "यह बदल रहा है" बिंदु को संबोधित करना: यह नहीं है कि पाइथन 3 सी कार्यान्वयन कैसे करता है। उदाहरण के लिए py3, आप 'पिकले आयात करें 'और यह प्रतिनिधि' आयात _ पिक्ले '- सी कार्यान्वयन - यदि उपलब्ध हो तो आयात करें। – roippi
धन्यवाद, @roippi, मैं में पैच का जिक्र कर रहा था जिसे 'cOrderedDict' कहा जाता है। तथ्य यह है कि सी और पायथन संस्करण दोनों एक ही नाम के माध्यम से आयात किए जाएंगे अप्रासंगिक है। 'डिफॉल्टडिक्ट' और 'ऑर्डरर्ड डिक्ट'' के लिए नामकरण सम्मेलन अभी भी मेल नहीं खाएंगे। –