2012-08-08 16 views
5

पाइथन एक टिप्पणी के इंडेंटेशन पर कैसे प्रतिक्रिया करता है?इंडेंटेशन पायथन में टिप्पणी से त्रुटि

def foo(): 
    """ 
    Random comment 
    """ 
    return True 

काम करता है, लेकिन:

def foo(): 
""" 
Random comment 
""" 
    return True 

काम नहीं करता है, एक IndentationError फेंक।

मुझे अजीब लगता है क्योंकि टिप्पणियां और कुछ और टिप्पणी नहीं होनी चाहिए। और वैसे, यह काम करता है:

def foo(): 
# Another random comment 
    return True 
+0

शायद आप का मतलब है कि दूसरा कोड स्निपेट * करता है * एक 'इंडेंटररर' फेंक देता है। –

+2

@ टिचोड्रोमा वास्तव में ओपी का मतलब है कि दूसरा कोड स्निपेट काम नहीं करता है, 'इंडेंटेशन एरर' – elssar

+1

आह फेंक रहा है, यहां स्टैक ओवरफ़्लो पर अंग्रेजी! –

उत्तर

11

ट्रिपल-उद्धृत स्ट्रिंग कोई टिप्पणी नहीं है; यह विधि का docstring है। आप foo.__doc__ के साथ इसे बाद में एक्सेस कर सकते हैं, उदाहरण के लिए, या इसे help(foo) के साथ प्रारूपित किया गया है। ट्रिपल-उद्धरण (""" या ''') string literal निर्दिष्ट करने की एक पायथन-विशिष्ट विधि है जहां न्यूलाइन को बचने की आवश्यकता नहीं है।

इस तरह, यह फ़ंक्शन के शरीर का हिस्सा है, और इस प्रकार मैच के लिए इंडेंट होना आवश्यक है। वास्तव में, first statement of a function के रूप में दिखाई देने वाली किसी भी स्ट्रिंग को डॉकस्ट्रिंग के रूप में माना जाता है, एकल उद्धरण भी काम करेगा। वही चाल कक्षाओं और मॉड्यूल के लिए भी काम करती है।

बहुत सारे टूल इस दस्तावेज़ स्ट्रिंग का उपयोग कर सकते हैं; उदाहरण के लिए, आप इस जानकारी में doctest tests एम्बेड कर सकते हैं। इस स्ट्रिंग को स्वरूपित करने पर सम्मेलनों के लिए PEP 257 देखें। दूसरी ओर

टिप्पणियाँ, कर रहे हैं हमेशा से दर्शाया जाता है एक # (जहां एक स्ट्रिंग का हिस्सा नहीं शाब्दिक) और एक लाइन के अंत तक ध्यान नहीं दिया जाता। यदि सभी पंक्तियों में एक टिप्पणी है, तो इस प्रकार पूरी रेखा को अनदेखा किया जाता है, जैसा कि केवल सफेद जगह के साथ एक रेखा होगी। documentation on comments देखें।

+1

आपको पाइथन में केवल उन टिप्पणियां जोड़नी चाहिए जो केवल '#' से शुरू होती हैं और कुछ भी नहीं। –

+1

मेरा मानना ​​है कि आप डॉकस्ट्रिंग-नेस पर अधिक जोर दे रहे हैं। इंडेंटेशन मुद्दे के प्रति डॉकस्ट्रिंग के साथ कुछ लेना देना नहीं है। यह सिर्फ तारों के साथ करना है। 'पेप 257' के साथ – BrenBarn

+0

आपको' pep8' से टिप्पणी अनुभाग पढ़ना होगा http://www.python.org/dev/peps/pep-0008/#comments –

1

ट्रिपल-उद्धृत स्ट्रिंग कोई टिप्पणी नहीं है, यह एक स्ट्रिंग अक्षर है। यह आपके कोड द्वारा किसी भी तरह से असाइन या उपयोग नहीं किया जाता है, लेकिन यह अभी भी एक नियमित स्ट्रिंग है और इसे पायथन के सिंटैक्स में फिट करना है। (इस मामले में यह डॉकस्ट्रिंग होता है, लेकिन इसका कोई संबंध नहीं है कि उसके लिए इंडेंटेशन मायने रखता है या नहीं।)

# टिप्पणियां प्राप्त करने का तरीका है।

+1

असाइन या इस्तेमाल नहीं किया गया है ?! –

+1

@ मार्टिजन पीटर्स: मुझे लगता है कि आपका मतलब है कि यह डॉकस्ट्रिंग है? यह कोड में असाइन या इस्तेमाल नहीं किया गया है। यह डॉकस्ट्रिंग होता है, लेकिन इसका कोई संबंध नहीं है कि इंडेंटेशन क्यों आवश्यक है या नहीं। मैंने यह स्पष्ट करने के लिए संपादित किया कि यह डॉकस्ट्रिंग है, यद्यपि। – BrenBarn

+1

यहां उनके उदाहरणों में असाइन या उपयोग नहीं किया गया *, लेकिन यह * असाइन किया गया है! आपका कथन सबसे भ्रमित है। –