अजगर प्रलेखन के लिए javadoc का उपयोग करना [बंद]


162

मैं वर्तमान में पायथन के साथ शुरुआत कर रहा हूं और मेरे पास एक मजबूत पीएचपी बैकग्राउंड है और पीएचपी में मैंने javadocप्रलेखन टेम्पलेट के रूप में उपयोग करने की आदत डाल ली है ।

मैं सोच रहा था कि पायथन में प्रलेखन के javadocरूप में इसकी जगह है या नहीं docstringयहां स्थापित सम्मेलन और / या आधिकारिक गिल्ड क्या हैं?

उदाहरण कुछ इस तरह है कि पायथन मानसिकता में फिट होने के लिए भी विस्तृत है या क्या मुझे यथासंभव संक्षिप्त होने की कोशिश करनी चाहिए?

"""
replaces template place holder with values

@param string timestamp     formatted date to display
@param string priority      priority number
@param string priority_name priority name
@param string message       message to display

@return string formatted string
"""

और अगर मैं थोड़ा बहुत थका हूं तो क्या मुझे इसके बजाय कुछ इस तरह से जाना चाहिए (जहां अधिकांश दस्तावेज __doc__विधि के माध्यम से मुद्रित नहीं होते हैं )?

# replaces template place holder with values
#    
# @param string timestamp     formatted date to display
# @param string priority      priority number
# @param string priority_name priority name
# @param string message       message to display
#    
# @return string formatted string

def format(self, timestamp = '', priority = '', priority_name = '', message = ''):
    """
    replaces template place holder with values
    """
    values = {'%timestamp%' : timestamp,
              '%priorityName%' : priority_name,
              '%priority%' : priority,
              '%message%' : message}

    return self.__pattern.format(**values)

6
इससे पहले के सवाल पर थेरेसा के कई और जवाब भी हैं , जिनमें से यह एक डुप्लिकेट है।
एलेक्स दुपी जुले

जवाबों:


227

ReStructuredText ("reST" के रूप में भी जाना जाता है) प्रारूप पर एक नज़र डालें , जो कि एक सादा पाठ / docstring मार्कअप प्रारूप है, और शायद पायथन दुनिया में सबसे लोकप्रिय है। और आपको निश्चित रूप से स्फिंक्स को देखना चाहिए , जो रीस्ट्रक्टेक्टेड टेक्सट से प्रलेखन उत्पन्न करने के लिए एक उपकरण है (उदाहरण के लिए स्वयं पायथन प्रलेखन)। स्फिंक्स में आपके कोड में दस्तावेज़ों से दस्तावेज़ निकालने की संभावना शामिल है ( sphinx.ext.autodoc देखें ), और कुछ सम्मेलनों के बाद reST फ़ील्ड सूचियों को पहचानता है । यह शायद ऐसा करने का सबसे लोकप्रिय तरीका बन गया है (या बन रहा है)।

आपका उदाहरण इस प्रकार दिख सकता है:

"""Replaces template placeholder with values.

:param timestamp: formatted date to display
:param priority: priority number
:param priority_name: priority name
:param message: message to display
:returns: formatted string
"""

या टाइप जानकारी के साथ विस्तारित:

"""Replaces template placeholder with values.

:param timestamp: formatted date to display
:type timestamp: str or unicode
:param priority: priority number
:type priority: str or unicode
:param priority_name: priority name
:type priority_name: str or unicode
:param message: message to display
:type message: str or unicode
:returns: formatted string
:rtype: str or unicode
"""

7
यदि आपको लंबे विवरण के लिए एक पंक्ति को तोड़ने की आवश्यकता है तो आप क्या करते हैं? कैसा लगेगा?
स्काईलार सैवलैंड

6
विशेष रूप से reStructuredText संदर्भ और फ़ील्ड सूची देखें: docutils.sourceforge.net/docs/ref/rst/…
स्टीवन

6
ध्यान दें कि यहां वाक्यांश वाक्यांश PE7 257 का अनुपालन नहीं करते हैं । इसके Replace template place holder with values.बजाय होना चाहिए replaces template place holder with values- प्रारंभ में वाक्य, ऊपरी केस पत्र और अंत में पूर्ण विराम (।) पर ध्यान दें।
kratenko

1
संस्करण 1.3 से, स्फिंक्स भी sphinx.ext.napoleonविस्तार के माध्यम से थोड़ा अच्छे प्रारूप का समर्थन करता है ।
पेट्री

3
क्या कोई कृपया मुझे इन विशेष डॉकस्ट्रिंग्स जैसे ": परम ____:" और ": रिटर्न:" को निर्दिष्ट करने वाले सर्वोत्तम दस्तावेज की ओर संकेत कर सकता है? इस तरह के दस्तावेज़ को फिलहाल खोजना मुश्किल है।
krumpelstiltskin

75

Google पायथन स्टाइल गाइड का पालन करें । ध्यान दें कि स्फ़िंक्स नेपोलियन एक्सटेंशन का उपयोग करके इस प्रारूप को पार्स भी कर सकता है , जो स्फ़िंक्स 1.3 के साथ पैक किया जाएगा (यह पीईपी 257 के साथ भी संगत है ):

def func(arg1, arg2):
    """Summary line.

    Extended description of function.

    Args:
        arg1 (int): Description of arg1
        arg2 (str): Description of arg2

    Returns:
        bool: Description of return value

    """
    return True

ऊपर दिए गए नेपोलियन प्रलेखन से लिया गया उदाहरण।

यहां सभी प्रकार के डोकस्ट्रिंग्स पर एक व्यापक उदाहरण ।


20
सभी मनुष्यों के लिए जो डॉकस्ट्रिंग्स पढ़ते हैं
वायलन फ़्लिन

1
Google Python स्टाइल गाइड लिंक अपडेट किया गया
उलझन में

@ उलझन में मैं कैसे कह सकता हूं कि मेरा तरीका वस्तुओं की एक सरणी लौटा रहा है?
सीटो

1
अब मैं उलझन में हूँ! आर्ग या परम? stackoverflow.com/questions/1788923/parameter-vs-argument
शुवा

25

अजगर प्रलेखन तार के लिए मानक पायथन संवर्धन प्रस्ताव 257 में वर्णित है ।

आपकी विधि के लिए उपयुक्त टिप्पणी कुछ इस तरह होगी

def format(...):
    """Return timestamp string with place holders replaced with values.

    Keyword arguments:
    timestamp     -- the format string (default '')
    priority      -- priority number (default '')
    priority_name -- priority name (default '')
    message       -- message to display (default '')
    """

17
PEP257 तर्क भाग के वास्तविक स्वरूपण पर कुछ भी नहीं बताता है। यह सिर्फ यह बताता है कि इसे लिखा जाना चाहिए, और एक उदाहरण देता है। लेकिन यह केवल एक उदाहरण है। इसलिए, मैं निश्चित रूप से स्फिंक्स सम्मेलन का उपयोग करने की सलाह दूंगा, क्योंकि आप PEP257 को नहीं तोड़ते हैं और आप एक प्रारूपण का उपयोग करते हैं जिसे स्फिंक्स द्वारा पार्स किया जा सकता है।
वाब

7
सिवाय rst प्रलेखन के ऊपर प्रस्तुत बदसूरत है और मनुष्यों के लिए अनावश्यक जानकारी के बहुत सारे है। मैं इसके बजाय एक कन्वेंशन का उपयोग करता हूं जो मेरे स्रोत कोड को पहले पार्स किए बिना पढ़ने के लिए सुखद बनाता है
उलझन में

1

दस्तावेज़ पायथन पर एक नज़र डालें , एक पृष्ठ "पायथन के लिए लेखकों और प्रलेखन के संभावित लेखकों के उद्देश्य से।"

संक्षेप में, reStructuredText खुद पाइथन के दस्तावेजीकरण के लिए उपयोग किया जाता है। डेवलपर के मार्गदर्शक में अच्छा प्रलेख लिखने के लिए एक reST प्राइमर, स्टाइल गाइड और सामान्य सलाह शामिल है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.