Lewati ke konten utama

Tutorial Docstring Python: Contoh & Format untuk Pydoc, Numpy, Sphinx Doc Strings

Pelajari tentang Docstring Python. Temukan berbagai contoh & jenis format docstring untuk Sphinx, Numpy, dan Pydoc.
Diperbarui 4 Jun 2026  · 15 mnt baca

Jalankan dan edit kode dari tutorial ini secara online.

Jalankan kode

Jika Anda baru mulai belajar Python dan ingin mempelajari lebih lanjut, ikuti kursus Introduction to Data Science in Python dari DataCamp.

Latih Docstring di Python dengan latihan praktik ini.

Apa itu Docstring Python? 

String dokumentasi Python, yang biasa disebut docstring, adalah literal string yang digunakan dalam definisi kelas, modul, fungsi, atau metode. Docstring dapat diakses dari atribut doc (__doc__) untuk objek Python apa pun dan juga dengan fungsi bawaan help(). Docstring suatu objek ditentukan dengan menyertakan konstanta string sebagai pernyataan pertama dalam definisi objek tersebut.

Berbeda dengan komentar biasa yang menjelaskan baris-baris kode individual, docstring memberikan deskripsi tingkat tinggi tentang apa yang dilakukan sebuah fungsi, kelas, atau modul. Docstring yang ditulis dengan baik meningkatkan keterbacaan kode, kemudahan pemeliharaan, dan kolaborasi, sehingga menjadi praktik terbaik untuk mendokumentasikan kode Python Anda sebagai pengembang Python.

Docstring membantu Anda memahami kapabilitas sebuah modul atau fungsi. Misalnya, katakanlah Anda memasang pustaka scikit-learn dan ingin mengetahui semua tentang paket sklearn seperti deskripsi, modul paket, dan sebagainya; Anda bisa menggunakan fungsi help untuk mendapatkan semua informasinya.

Yuk, impor paketnya terlebih dahulu.

import sklearn
help(sklearn)

Anda akan melihat keluaran yang mirip dengan berikut ini:

output

Docstring Python vs. Komentar

Docstring secara konsep mirip dengan komentar, tetapi merupakan versi komentar yang ditingkatkan, lebih logis, dan lebih berguna. Docstring berfungsi sebagai dokumentasi untuk kelas, modul, dan paket.

Di sisi lain, komentar terutama digunakan untuk menjelaskan bagian kode yang tidak jelas dan berguna untuk mencatat perbaikan bug dan tugas yang perlu dikerjakan.

Docstring direpresentasikan dengan tanda kutip pembuka & penutup, sedangkan komentar diawali dengan # di awal.

Perlu dicatat bahwa komentar tidak dapat diakses dengan atribut bawaan doc dan fungsi help. Mari lihat apa yang terjadi jika Anda mencobanya:

def string_reverse(str1):
    #Returns the reversed String.

    #Parameters:
    #    str1 (str):The string which is to be reversed.

    #Returns:
    #    reverse(str1):The string which gets reversed.   

    reverse_str1 = ''
    i = len(str1)
    while i > 0:
        reverse_str1 += str1[i - 1]
        i = i- 1
    return reverse_str1
print(string_reverse.__doc__)
None
help(string_reverse)
Help on function string_reverse in module __main__:

string_reverse(str1)

Ada beberapa cara menulis atau menggunakan Docstring, yaitu one-line docstring dan multi-line docstring. Mari pelajari satu per satu.

Docstring Satu Baris

Docstring satu baris adalah deskripsi singkat yang muat dalam satu baris. Docstring ditulis dengan tiga tanda kutip (''' atau """), dan tanda kutip penutup harus berada pada baris yang sama.

Walaupun tiga tanda kutip tunggal maupun ganda bisa digunakan, konvensi standar di Python adalah menggunakan tiga tanda kutip ganda (""").

Berikut contohnya: 

def square(a):
    """Returns the square of the given number."""
    return a ** 2  # Corrected exponentiation

# Accessing the docstring
print(square.__doc__)
 

Keluaran:

Returns the square of the given number.
 

Anda juga dapat mengambil dokumentasi ini menggunakan fungsi help() Python:

help(square)
 

Keluaran:

Help on function square in module __main__:

square(a)
    Returns the square of the given number.

Docstring Multi Baris

Docstring multi baris juga berisi baris ringkasan seperti pada docstring satu baris, tetapi diikuti satu baris kosong dan teks deskriptif.

Format umum untuk menulis Docstring multi baris adalah sebagai berikut:

def some_function(argument1):
    """Summary or Description of the Function

    Parameters:
    argument1 (int): Description of arg1

    Returns:
    int:Returning value

   """

    return argument1

print(some_function.__doc__)
Summary or Description of the Function

    Parameters:
    argument1 (int): Description of arg1

    Returns:
    int:Returning value
help(some_function)
Help on function some_function in module __main__:

some_function(argument1)
    Summary or Description of the Function

    Parameters:
    argument1 (int): Description of arg1

    Returns:
    int:Returning value

Mari lihat contoh yang menunjukkan bagaimana string multi baris dapat digunakan secara lebih rinci:

def string_reverse(str1):
    '''
    Returns the reversed String.

    Parameters:
        str1 (str):The string which is to be reversed.

    Returns:
        reverse(str1):The string which gets reversed.   
    '''

    reverse_str1 = ''
    i = len(str1)
    while i > 0:
        reverse_str1 += str1[i - 1]
        i = i- 1
    return reverse_str1
print(string_reverse('DeepLearningDataCamp'))
pmaCataDgninraeLpeeD
help(string_reverse)
Help on function string_reverse in module __main__:

string_reverse(str1)
    Returns the reversed String.

    Parameters:
        str1 (str):The string which is to be reversed.

    Returns:
        reverse(str1):The string which gets reversed.

Anda dapat melihat di atas bahwa baris ringkasan berada pada satu baris dan dipisahkan dari konten lain oleh satu baris kosong. Konvensi ini perlu diikuti karena berguna untuk alat pengindeksan otomatis.

Docstring Bawaan Python

Mari lihat Docstring bawaan Python.

Semua fungsi, kelas, dan metode bawaan memiliki deskripsi manusiawi yang melekat padanya. Anda dapat mengaksesnya dengan dua cara.

  • atribut doc
  • fungsi help

Anda akan melihat bahwa keluaran fungsi help lebih panjang daripada atribut __doc__.

Sebagai contoh:

import math
print(math.__doc__)
This module provides access to the mathematical functions
defined by the C standard.

Demikian pula, Anda dapat menggunakan fungsi help:

help(math)
output

Docstring Python dalam Kelas

Dalam definisi kelas, docstring dapat digunakan untuk memberikan dokumentasi bagi keseluruhan kelas. Biasanya ditempatkan tepat setelah definisi kelas dan ditulis dalam tiga tanda kutip ("""). Contoh:

class MyClass:
    """This is the documentation for MyClass."""

    def __init__(self):
        """This is the documentation for the __init__ method."""
        pass

Docstring dapat diakses menggunakan atribut __doc__ dari kelas atau metode. Misalnya, Anda dapat mengakses docstring untuk MyClass menggunakan MyClass.__doc__.

Sekarang mari lihat beberapa Format Docstring populer dan memahaminya lebih detail.

Format Docstring Python

Ada banyak format Docstring yang tersedia, tetapi sebaiknya gunakan format yang mudah dikenali oleh parser Docstring dan juga oleh sesama Data Scientist/programmer. Tidak ada aturan baku untuk memilih format Docstring, namun konsistensi menggunakan format yang sama di seluruh proyek itu penting. Selain itu, lebih baik menggunakan jenis pemformatan yang sebagian besar didukung oleh Sphinx.

Format yang paling umum digunakan tercantum di bawah ini.

Jenis Pemformatan Deskripsi
Docstring NumPy/SciPy Kombinasi reStructured dan Google Docstrings serta didukung oleh Sphinx
PyDoc Modul dokumentasi standar untuk Python dan didukung oleh Sphinx
EpyDoc Merender Epytext sebagai rangkaian dokumen HTML dan alat untuk menghasilkan dokumentasi API untuk modul Python berdasarkan Docstring-nya
Google Docstrings Gaya Google

Mungkin ada berbagai string dokumentasi yang tersedia. Anda tidak perlu khawatir harus mempelajari semuanya dari nol. Format semua string dokumentasi hampir mirip. Polanya serupa, hanya ada perbedaan kecil pada tiap format. Anda akan melihat contoh format populer untuk string dokumentasi beserta penggunaannya.

Pertama, Anda akan melihat Sphinx Style secara rinci, lalu Anda dapat dengan mudah mengikuti format lainnya.

Gaya Sphinx

Sphinx adalah gaya yang mudah dan tradisional, bersifat verbose, dan awalnya dibuat khusus untuk Dokumentasi Python. Sphinx menggunakan reStructuredText, yang penggunaannya mirip dengan Markdown.

class Vehicle(object):
    '''
    The Vehicle object contains lots of vehicles
    :param arg: The arg is used for ...
    :type arg: str
    :param `*args`: The variable arguments are used for ...
    :param `**kwargs`: The keyword arguments are used for ...
    :ivar arg: This is where we store arg
    :vartype arg: str
    '''


    def __init__(self, arg, *args, **kwargs):
        self.arg = arg

    def cars(self, distance, destination):
        '''We can't travel a certain distance in vehicles without fuels, so here's the fuels

        :param distance: The amount of distance traveled
        :type amount: int
        :param bool destinationReached: Should the fuels be refilled to cover required distance?
        :raises: :class:`RuntimeError`: Out of fuel

        :returns: A Car mileage
        :rtype: Cars
        '''  
        pass

Sphinx menggunakan keyword(reserved word) sebagaimana sebagian besar bahasa pemrograman. Namun secara khusus disebut role di Sphinx. Pada kode di atas, Sphinx memiliki param sebagai role, dan type adalah role yang merupakan tipe data Sphinx untuk param. Role type bersifat opsional, tetapi param wajib. Role pengembalian mendokumentasikan objek yang dikembalikan. Ini berbeda dari role param. Role pengembalian tidak bergantung pada rtype dan sebaliknya. rtype adalah tipe objek yang dikembalikan dari fungsi yang diberikan.

Gaya Google

Gaya Google lebih mudah dan lebih intuitif digunakan. Gaya ini cocok untuk dokumentasi yang lebih singkat. Diperlukan konfigurasi berkas Python untuk memulai, yaitu menambahkan sphinx.ext.napoleon atau sphinxcontrib.napoleon ke daftar extensions di conf.py.

class Vehicles(object):
    '''
    The Vehicle object contains a lot of vehicles

    Args:
        arg (str): The arg is used for...
        *args: The variable arguments are used for...
        **kwargs: The keyword arguments are used for...

    Attributes:
        arg (str): This is where we store arg,
    '''
    def __init__(self, arg, *args, **kwargs):
        self.arg = arg

    def cars(self, distance,destination):
        '''We can't travel distance in vehicles without fuels, so here is the fuels

        Args:
            distance (int): The amount of distance traveled
            destination (bool): Should the fuels refilled to cover the distance?

        Raises:
            RuntimeError: Out of fuel

        Returns:
            cars: A car mileage
        '''
        pass

Gaya Google lebih baik daripada gaya Sphinx. Namun ada kekurangan, yaitu pada kode di atas, deskripsi multi baris untuk distance akan terlihat berantakan. Itulah mengapa Numpy dapat digunakan untuk dokumentasi yang lebih panjang.

Gaya Numpy

Gaya Numpy memiliki banyak detail dalam dokumentasi. Gaya ini lebih verbose daripada dokumentasi lainnya, tetapi merupakan pilihan yang sangat baik jika Anda ingin membuat dokumentasi mendetail, yaitu dokumentasi ekstensif untuk semua fungsi dan parameter.

class Vehicles(object):
    '''
    The Vehicles object contains lots of vehicles

    Parameters
    ----------
    arg : str
        The arg is used for ...
    *args
        The variable arguments are used for ...
    **kwargs
        The keyword arguments are used for ...

    Attributes
    ----------
    arg : str
        This is where we store arg,
    '''
    def __init__(self, arg, *args, **kwargs):
        self.arg = arg

    def cars(self, distance, destination):
        '''We can't travel distance in vehicles without fuels, so here is the fuels

        Parameters
        ----------
        distance : int
            The amount of distance traveled
        destination : bool
            Should the fuels refilled to cover the distance?

        Raises
        ------
        RuntimeError
            Out of fuel

        Returns
        -------
        cars
            A car mileage
        '''
        pass

Contoh di atas lebih verbose daripada dokumentasi lainnya. Contoh ini lebih panjang dan sebaiknya digunakan untuk dokumentasi yang panjang dan mendetail.

PyDoc

Seperti yang Anda ketahui, docstring dapat diakses melalui atribut bawaan Python __doc__ dan fungsi help(). Anda juga bisa memanfaatkan modul bawaan bernama Pydoc, yang sangat berbeda dari sisi fitur & fungsionalitas dibandingkan dengan atribut doc dan fungsi help.

Pydoc adalah alat yang bermanfaat saat Anda ingin berbagi kode dengan rekan kerja atau menjadikannya open-source, di mana Anda menargetkan audiens yang jauh lebih luas. Pydoc dapat menghasilkan halaman web dari dokumentasi Python Anda dan juga dapat menjalankan server web.

Mari lihat cara kerjanya.

Cara termudah dan paling nyaman untuk menjalankan modul Pydoc adalah menjalankannya sebagai skrip. Untuk menjalankannya di dalam sel jupyter lab, Anda akan menggunakan karakter tanda seru (!).

  • Pydoc sebagai modul
!python -m pydoc
pydoc - the Python documentation tool

pydoc <name> ...
    Show text documentation on something.  <name> may be the name of a
    Python keyword, topic, function, module, or package, or a dotted
    reference to a class or function within a module or module in a
    package.  If <name> contains a '\', it is used as the path to a
    Python source file to document. If name is 'keywords', 'topics',
    or 'modules', a listing of these things is displayed.

pydoc -k <keyword>
    Search for a keyword in the synopsis lines of all available modules.

pydoc -n <hostname>
    Start an HTTP server with the given hostname (default: localhost).

pydoc -p <port>
    Start an HTTP server on the given port on the local machine.  Port
    number 0 can be used to get an arbitrary unused port.

pydoc -b
    Start an HTTP server on an arbitrary unused port and open a Web browser
    to interactively browse documentation.  This option can be used in
    combination with -n and/or -p.

pydoc -w <name> ...
    Write out the HTML documentation for a module to a file in the current
    directory.  If <name> contains a '\', it is treated as a filename; if
    it names a directory, documentation is written for all the contents.

Jika Anda melihat keluaran di atas, penggunaan pertama Pydoc adalah menampilkan dokumentasi teks pada fungsi, modul, kelas, dan sebagainya, jadi mari lihat bagaimana Anda bisa memanfaatkannya dengan lebih baik daripada fungsi help.

!python -m pydoc glob
Help on module glob:

NAME
    glob - Filename globbing utility.

MODULE REFERENCE
    https://docs.python.org/3.7/library/glob

    The following documentation is automatically generated from the Python
    source files.  It may be incomplete, incorrect or include features that
    are considered implementation detail and may vary between Python
    implementations.  When in doubt, consult the module reference at the
    location listed above.

FUNCTIONS
    escape(pathname)
        Escape all special characters.

    glob(pathname, *, recursive=False)
        Return a list of paths matching a pathname pattern.

        The pattern may contain simple shell-style wildcards a la
        fnmatch. However, unlike fnmatch, filenames starting with a
        dot are special cases that are not matched by '*' and '?'
        patterns.

        If recursive is true, the pattern '**' will match any files and
        zero or more directories and subdirectories.

    iglob(pathname, *, recursive=False)
        Return an iterator which yields the paths matching a pathname pattern.

        The pattern may contain simple shell-style wildcards a la
        fnmatch. However, unlike fnmatch, filenames starting with a
        dot are special cases that are not matched by '*' and '?'
        patterns.

        If recursive is true, the pattern '**' will match any files and
        zero or more directories and subdirectories.

DATA
    __all__ = ['glob', 'iglob', 'escape']

FILE
    c:\users\hda3kor\.conda\envs\test\lib\glob.py

Sekarang, mari ambil dokumentasi glob menggunakan fungsi help.

help(glob)
---------------------------------------------------------------------------

NameError                                 Traceback (most recent call last)

<ipython-input-6-6f504109e3a2> in <module>
----> 1 help(glob)


NameError: name 'glob' is not defined

Nah, seperti yang Anda lihat, muncul name error karena glob belum didefinisikan. Jadi agar dapat menggunakan fungsi help untuk mengambil dokumentasi, Anda harus terlebih dahulu mengimpor modul tersebut, yang tidak diperlukan pada Pydoc.

  • Pydoc sebagai layanan web

Mari jelajahi fitur Pydoc yang paling menarik, yaitu menjalankan Pydoc sebagai layanan web.

Untuk melakukan ini, Anda cukup menjalankan Pydoc sebagai skrip dengan argumen -b yang akan memulai server HTTP pada port kosong acak dan membuka browser web untuk menjelajahi dokumentasi secara interaktif. Ini bermanfaat terutama ketika Anda memiliki berbagai layanan lain yang berjalan di sistem dan Anda tidak ingat port mana yang sedang menganggur.

!python -m pydoc -b
^C

Saat Anda menjalankan sel di atas, jendela baru akan terbuka pada nomor port acak, dan browser web akan terlihat mirip dengan gambar di bawah.

web browser

Mari lihat dokumentasi modul h5py, yaitu format berkas yang digunakan untuk menyimpan bobot arsitektur jaringan saraf.

documentation of the h5py module

Perbandingan format docstring 

Pada tabel di bawah, Anda dapat melihat perbandingan berbagai jenis format docstring yang telah disebutkan di atas: 

Format Deskripsi Kelebihan Kekurangan Penggunaan Terbaik
Sphinx Menggunakan reStructuredText untuk dokumentasi, mendukung role terstruktur seperti param, type, returns, raises. Disukai untuk proyek besar dan terintegrasi baik dengan dokumentasi Sphinx. Sangat terstruktur; Bekerja baik dengan Sphinx; Standar industri untuk proyek besar. Verbose; Memerlukan pemahaman sintaks reStructuredText. Proyek Python skala besar yang memerlukan dokumentasi terstruktur.
Google Format yang lebih sederhana dan intuitif dengan Args, Attributes, Returns, dan Raises. Lebih mudah dibaca tetapi bisa berantakan untuk deskripsi multi baris. Mudah dibaca dan ditulis; Ideal untuk dokumentasi yang lebih singkat. Deskripsi multi baris dapat menjadi semrawut; Memerlukan konfigurasi tambahan. Dokumentasi Python umum dengan gaya yang mudah dibaca.
NumPy Sangat detail dan terstruktur, menggunakan Parameters, Attributes, Returns, Raises. Ideal untuk komputasi ilmiah dan proyek data science. Sangat detail dan cocok untuk proyek ilmiah dan data science yang kompleks. Lebih verbose dibanding format lain; Dapat terasa berlebihan untuk proyek sederhana. Komputasi ilmiah dan proyek data science yang memerlukan dokumentasi rinci.
PyDoc Alat dokumentasi bawaan Python. Dapat menghasilkan halaman web dari docstring, dan menjalankan server web untuk penelusuran interaktif. Terintegrasi dengan Python; Dapat menghasilkan dokumentasi berbasis web. Fleksibilitas terbatas dibanding alat dokumentasi lain. Proyek yang memerlukan dokumentasi bawaan Python dan penelusuran berbasis web.
  • Gaya Sphinx: Sering digunakan di proyek besar yang membutuhkan dokumentasi komprehensif. Terintegrasi baik dengan generator dokumentasi Sphinx.
  • Gaya Google: Ideal untuk proyek yang mengutamakan kesederhanaan dan keterbacaan, terutama di organisasi yang menggunakan panduan gaya Google.
  • Gaya NumPy: Paling cocok untuk proyek yang memerlukan dokumentasi rinci dan ekstensif, umum di data science dan komputasi ilmiah.
  • PyDoc: Berguna untuk menghasilkan dokumentasi teks dan HTML, tetapi tidak memiliki format terstruktur seperti yang lain.

Kesimpulan

Selamat telah menyelesaikan tutorial docstring di Python.

Tutorial ini berfokus terutama untuk membantu Anda memulai dengan docstring dengan membahas topik-topik esensial. Namun, Docstring adalah topik yang luas, dan beberapa konsep mungkin belum dibahas. Jika Anda ingin belajar lebih lanjut, lihat tutorial string Python kami dan kursus tentang menulis fungsi di Python.

Jika Anda baru mulai belajar Python dan ingin mempelajari lebih lanjut, ikuti kursus Introduction to Data Science in Python dari DataCamp. Anda juga dapat mengambil salah satu jalur karier Python kami dan memulai perjalanan menjadi Pengembang Python atau Data Scientist dengan Python

FAQ Docstring Python

Apa itu docstring Python?

Docstring adalah literal string yang muncul sebagai pernyataan pertama dalam definisi modul, fungsi, kelas, atau metode. Docstring digunakan untuk memberikan dokumentasi bagi modul, kelas, dan metode Python, dan biasanya ditulis dalam sintaks khusus bernama "reStructuredText" yang digunakan untuk membuat dokumentasi terformat.

Bagaimana cara mengakses docstring di Python?

Di Python, Anda dapat mengakses docstring menggunakan atribut __doc__ dari objek. Misalnya, Anda dapat mengakses docstring untuk sebuah fungsi dengan my_function.__doc__ atau docstring untuk sebuah kelas dengan MyClass.__doc__.

Apakah docstring wajib di Python?

Tidak, docstring tidak wajib di Python. Namun, docstring merupakan bagian dari praktik terbaik untuk mendokumentasikan kode Anda. Anda dapat mengaksesnya saat runtime menggunakan atribut __doc__, yang dapat membantu untuk debugging dan pengujian, dan juga dapat digunakan oleh alat lain, seperti generator dokumentasi, untuk membuat panduan pengguna dan referensi API secara otomatis.

Topik

Kursus Python

Kursus

Pengantar Python

4 Hr
6.9M
Kuasai dasar-dasar analisis data dengan Python dalam 4 jam. Kursus online ini memperkenalkan antarmuka Python dan pustaka populer.
Lihat DetailRight Arrow
Mulai Kursus
Lihat Lebih BanyakRight Arrow
Terkait

blogs

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

blogs

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

blogs

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

Lihat Lebih BanyakLihat Lebih Banyak