2009-11-11 17 views
16

मुझे csv.dictreader के तर्कों को समझने में परेशानी हो रही है और मुझे एहसास हुआ कि मेरे पास कोई संकेत नहीं है कि स्क्वायर ब्रैकेट्स क्या इंगित करता है।स्क्वायर ब्रैकेट्स, "[]", फ़ंक्शन/क्लास दस्तावेज़ में क्या मतलब है?

docmentation से

:

class csv.DictReader(csvfile[, fieldnames=None[, restkey=None[, restval=None[, dialect='excel'[, *args, **kwds]]]]]) 

मैं कक्षा इन्स्टेन्शियशन के तर्क का एक सारांश की सराहना करेंगे।

धन्यवाद

+0

संबंधित: [एपीआई दस्तावेज कैसे पढ़ा जाए] [http://stackoverflow.com/q/10925478/1048572) – Bergi

+0

संभावित डुप्लिकेट [\ [, तत्व \] मतलब क्या है?] (Http: // stackoverflow। कॉम/प्रश्न/17752417/क्या-करता-तत्व-माध्य) – Bergi

उत्तर

14

वर्ग कोष्ठक संकेत मिलता है कि इन तर्कों वैकल्पिक हैं। आप उन्हें छोड़ सकते हैं।

इसलिए, इस मामले में आप कर रहे हैं केवल आवश्यक csv.DictReader को csvfile तर्क पारित करने के लिए। यदि आप एक दूसरा पैरामीटर पास करेंगे, तो इसे fieldnames तर्कों के रूप में व्याख्या किया जाएगा। तीसरा restkey, आदि

यदि आप केवल निर्दिष्ट करना चाहते हैं उदा। कीवर्ड तर्क पर,

csv.DictReader(file('test.csv'), dialect='excel_tab') 

अधिक जानकारी के लिए python.org पर ट्यूटोरियल के section 4.7.2 देखें: cvsfile और dialect, तो आप स्पष्ट रूप से कीवर्ड तर्क नाम के लिए है, इसलिए की तरह होगा।

+0

यह उत्तर सही है। केवल एक चीज है जो मैं जोड़ूंगा। हालांकि cvs.DictReader कीवर्ड तर्क लेता है, आप डिफ़ॉल्ट रूप से गैर-कीवर्ड तर्क भी प्राप्त कर सकते हैं। ये ग्लोबल 'रेंज()' फ़ंक्शन, या स्ट्रिंग पर 'स्प्लिट()' विधि की तरह सी में लिखे गए बिल्टिन फ़ंक्शंस में होते हैं। एक स्ट्रिंग पर 'विभाजित' के लिए दस्तावेज़ इस तरह अपने तर्कों देता है: S.split ([सितंबर, [, maxsplit]]) -> तार की सूची इसलिए इस सोच सकते हैं काम करेगा: " abcdefg ".split (maxsplit = 2) लेकिन, दुख की बात है, यह नहीं है। पायथन एक "TypeError फेंकता है: विभाजित() कोई कीवर्ड तर्क नहीं लेता" अपवाद। आह। –

+0

वैकल्पिक बनाम डिफ़ॉल्ट बहस के बीच कोई अंतर है?क्या बीच का अंतर हो सकता है: exampleFunc1 डीईएफ़ (ARG1, [ARG2 = 2], [arg3 = 3]): और डीईएफ़ exampleFunc2 (ARG1, ARG2 = 2, arg3 = 3): धन्यवाद – behindalens

+0

@behindalens: दोनों मामलों में 'arg2' और 'arg3' छोड़ा जा सकता है, इस मामले में उनका मूल्य क्रमशः' 2' और '3' होगा। वैकल्पिक * तर्क * एक डिफ़ॉल्ट * मान * हो सकता है। – Stephan202

2

आमतौर पर एपीआई दस्तावेज स्क्वायर ब्रैकेट में वैकल्पिक का मतलब है। मुझे लगता है कि उनका मतलब वही है।

1

दूसरों ने जो कहा है उसे दोहराने के लिए, तर्क वैकल्पिक हैं।

आप वैकल्पिक भागों को छोड़ दें, शेष fieldnames=, restval=, restkey= या dialect= कीवर्ड समारोह जो भागों याद कर रहे हैं बताओ।

सिंटैक्स इसका सुझाव नहीं देता है, लेकिन मुझे आश्चर्य नहीं होगा अगर कीवर्ड किसी भी क्रम में तर्कों को निर्दिष्ट करने की अनुमति देते हैं, सिवाय इसके कि अंतिम दो तर्क दोनों निर्दिष्ट किए गए हैं, या दोनों छोड़े गए हैं।

+0

वास्तव में कीवर्ड तर्क किसी भी क्रम में निर्दिष्ट किए जा सकते हैं। यह उनकी अपील का हिस्सा है। साथ ही, जो कार्य मनमाने ढंग से कई कीवर्ड तर्क लेते हैं, वे '** kwargs' पैरामीटर के साथ ऐसा करते हैं, जो 'dict' है। जैसा कि आप जानते हैं, 'dict' ऑब्जेक्ट ऑर्डर बनाए नहीं रखते हैं। – Stephan202

+0

@ पैवियम: यह कैसे संकेत दिया गया है कि पिछले दो तर्क ** ** ** निर्दिष्ट या छोड़े गए हैं? – behindalens

+0

वे * दोनों * ब्रैकेट के एक सेट के अंदर हैं। – pavium

2

यह वास्तव में Backus-Naur Form नामक भाषा वाक्यविन्यास का वर्णन करने के लिए व्यापक रूप से उपयोग किए जाने वाले नोटेशन का एक उप-समूह है (विवरण के लिए विकिपीडिया लेख देखें)।

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