2016-04-02 11 views
8

मैं पाइथन के लिए नया हूं और मैं एक अच्छा पायथन कोड शैली रखने के लिए PEP 0008 का पालन करने के लिए ऑनलाइन दस्तावेज और (कोशिश कर रहा हूं) दोनों पढ़ रहा हूं। मैं कोड खंड मैं आधिकारिक अजगर में पाया docs फिर से पुस्तकालय के बारे में पढ़ाई के दौरान के बारे में उत्सुक हूँ:पायथन नामकरण सम्मेलन - नामितुप

import collections 

Token = collections.namedtuple('Token', ['typ', 'value', 'line', 'column']) 

मैं नहीं समझ सकता क्यों Token चर एक पहले अक्षर के साथ नामित किया गया है पूंजीकृत; मैंने पीईपी 0008 के माध्यम से पढ़ा है और मैंने जो देखा है उसके लिए इसका कोई संदर्भ नहीं है। यह token या TOKEN यदि यह स्थिर था (जो मुझे पता है कि यह नहीं है) नहीं होना चाहिए?

+5

क्योंकि यह एक वर्ग है - 'namedtuple' एक वर्ग कारखाना है। – jonrsharpe

उत्तर

9

कोड खंड आपके द्वारा दी गई है, Token एक named tuple निश्चित रूप से नहीं एक निरंतर है। यह अन्य चर नामों का नामकरण शैली का पालन नहीं करता है केवल इस तथ्य पर जोर देने के लिए कि यह वर्ग कारखाना फ़ंक्शन है। कोई चेतावनी एक पीईपी 0008 शैली परीक्षक (PyCharm उदाहरण के लिए) की तरह से हो जाएगा, तो आप के रूप में token इसे लिखने लेकिन मुझे लगता है कि इस तरह से यह एक वर्ग के कारखाने नाम के रूप में यह भेद नहीं करता है के बाद से अच्छा अभ्यास नहीं है।

तो, नामित अप्सप्लेल्स पीईपी 0008 में Class names के तहत आते हैं। बहुत बुरा स्पष्ट रूप से नहीं बताया गया है। उदाहरण आप writing a tokenizer के लिए उल्लेख किया है इसके अलावा, यह भी collections.namedtuple docs उदाहरण में देखा जा सकता है:

Point = namedtuple('Point', ['x', 'y']) 
Point3D = namedtuple('Point3D', Point._fields + ('z',)) 
Book = namedtuple('Book', ['id', 'title', 'authors']) 
+0

एंटी हापाला के जवाब ने मुझे मार दिया। बहुत बढ़िया जवाब। – Yannis

+0

अच्छा आपका उत्तर बेहतर है: डी –

+0

दोनों महान जवाब, मुझे वास्तव में पीईपी 0008 के लिंक पसंद आया। धन्यवाद – Karim

8

यहां कुंजी collections.namedtuple है। प्रलेखन कहते हैं,

collections.namedtuple(typename, field_names, verbose=False, rename=False)

एक नया tupleउपवर्गtypename नामित देता है। नया सबक्लास का उपयोग tuple बनाने के लिए किया जाता है-जैसी वस्तुओं के साथ जिनके पास विशेषता लुकअप के साथ-साथ अनुक्रमणीय और पुन: प्रयोज्य भी उपलब्ध हैं। उप-वर्ग के उदाहरणों में सहायक डॉकस्ट्रिंग (टाइपनाम और फ़ील्ड_नाम के साथ) और सहायक __repr__() विधि भी है जो name=value प्रारूप में ट्यूपल सामग्री सूचीबद्ध करती है।

कोई पीईपी 8 उल्लंघन नहीं है; Token एक उपयोगकर्ता परिभाषित वर्ग है और इसका नाम पूंजीकृत है जैसा इसे करना चाहिए।

संबंधित मुद्दे