Dalam tutorial ini, kita akan belajar tentang docstrings Python. Lebih khusus lagi, kita akan mempelajari bagaimana dan mengapa docstrings digunakan dengan bantuan contoh.
Docstring Python adalah literal string yang muncul tepat setelah definisi fungsi, metode, kelas, atau modul. Mari kita ambil contoh.
Contoh 1: Docstrings
def square(n): '''Takes in a number n, returns the square of n''' return n**2
Di sini, string literal:
'' 'Mengambil angka n, mengembalikan kuadrat dari n' ''
Di dalam tanda kutip tiga adalah docstring dari fungsi square()
yang muncul tepat setelah definisinya.
Catatan: Kami juga dapat menggunakan tiga """
kutipan untuk membuat dokumen.
Komentar Python vs Docstrings
Komentar Python
Komentar adalah deskripsi yang membantu pemrogram lebih memahami maksud dan fungsionalitas program. Mereka sepenuhnya diabaikan oleh interpreter Python.
Di Python, kami menggunakan simbol hash #
untuk menulis komentar satu baris. Sebagai contoh,
# Program to print "Hello World" print("Hello World")
Komentar Python Menggunakan String
Jika kita tidak memberikan string ke variabel apapun, mereka bertindak sebagai komentar. Sebagai contoh,
"I am a single-line comment" ''' I am a multi-line comment! ''' print("Hello World")
Catatan: Kami menggunakan tanda kutip tiga untuk string multi-baris.
Docstring Python
Seperti disebutkan di atas, docstring Python adalah string yang digunakan tepat setelah definisi dari sebuah fungsi, metode, kelas, atau modul (seperti pada Contoh 1 ). Mereka digunakan untuk mendokumentasikan kode kita.
Kami dapat mengakses dokumen ini menggunakan __doc__
atribut.
Atribut __doc__ Python
Kapan pun literal string ada tepat setelah definisi dari suatu fungsi, modul, kelas, atau metode, mereka dikaitkan dengan objek sebagai __doc__
atributnya. Nanti kita dapat menggunakan atribut ini untuk mengambil docstring ini.
Contoh 2: Mencetak docstring
def square(n): '''Takes in a number n, returns the square of n''' return n**2 print(square.__doc__)
Keluaran
Mengambil angka n, mengembalikan kuadrat dari n
Di sini, dokumentasi square()
fungsi kita dapat diakses menggunakan __doc__
atribut.
Sekarang, mari kita lihat docstrings untuk fungsi bawaan print()
:
Contoh 3: Docstring untuk fungsi print () built-in
print(print.__doc__)
Keluaran
print (nilai,…, sep = '', end = ' n', file = sys.stdout, flush = False) Mencetak nilai ke aliran, atau ke sys.stdout secara default. Argumen kata kunci opsional: file: objek seperti file (aliran); default ke sys.stdout saat ini. sep: string disisipkan di antara nilai, default spasi. end: string ditambahkan setelah nilai terakhir, default baris baru. flush: apakah akan menyiram aliran secara paksa.
Di sini, kita dapat melihat bahwa dokumentasi dari print()
fungsi tersebut hadir sebagai __doc__
atribut dari fungsi ini.
Docstring baris tunggal dengan Python
Docstring baris tunggal adalah dokumen yang muat dalam satu baris.
Konvensi standar untuk menulis dokumen baris tunggal:
- Meskipun satu baris, kami masih menggunakan tanda kutip tiga di sekitar dokumen ini karena dapat diperluas dengan mudah nanti.
- Kutipan penutup berada di baris yang sama dengan kutipan pembukaan.
- Tidak ada baris kosong sebelum atau sesudah docstring.
- Mereka tidak boleh deskriptif, melainkan harus mengikuti struktur "Lakukan ini, kembalikan itu" yang diakhiri dengan titik.
Mari kita ambil contoh.
Contoh 4: Menulis docstring baris tunggal untuk suatu fungsi
def multiplier(a, b): """Takes in two numbers, returns their product.""" return a*b
Docstring multi-baris dengan Python
Docstring multi-baris terdiri dari baris ringkasan seperti docstring satu baris, diikuti dengan baris kosong, diikuti dengan deskripsi yang lebih rumit.
Dokumen PEP 257 menyediakan konvensi standar untuk menulis dokumen multi-baris untuk berbagai objek.
Beberapa telah terdaftar di bawah ini:
1. Docstrings untuk Python Modules
- Docstring untuk Python Modules harus mencantumkan semua kelas, fungsi, objek dan pengecualian yang tersedia yang diimpor ketika modul diimpor.
- They should also have a one-line summary for each item.
They are written at the beginning of the Python file.
Let's look at the docstrings for the builtin module in Python called pickle
.
Example 4: Docstrings of Python module
import pickle print(pickle.__doc__)
Output
Create portable serialized representations of Python objects. See module copyreg for a mechanism for registering custom picklers. See module pickletools source for extensive comments. Classes: Pickler Unpickler Functions: dump(object, file) dumps(object) -> string load(file) -> object loads(string) -> object Misc variables: __version__ format_version compatible_formats
Here, we can see that the docstring written at the beginning of the pickle.py module file can be accessed as its docstring.
2. Docstrings for Python Functions
- The docstring for a function or method should summarize its behavior and document its arguments and return values.
- It should also list all the exceptions that can be raised and other optional arguments.
Example 5: Docstrings for Python functions
def add_binary(a, b): ''' Returns the sum of two decimal numbers in binary digits. Parameters: a (int): A decimal integer b (int): Another decimal integer Returns: binary_sum (str): Binary string of the sum of a and b ''' binary_sum = bin(a+b)(2:) return binary_sum print(add_binary.__doc__)
Output
Returns the sum of two decimal numbers in binary digits. Parameters: a (int): A decimal integer b (int): Another decimal integer Returns: binary_sum (str): Binary string of the sum of a and b
As you can see, we have included a short description of what the function does, the parameter it takes in and the value it returns. The string literal is embedded to the function add_binary
as its __doc__
attribute.
3. Docstrings for Python Classes
- The docstrings for classes should summarize its behavior and list the public methods and instance variables.
- The subclasses, constructors, and methods should each have their own docstrings.
Example 6: Docstrings for Python class
Suppose we have a Person.py file with the following code:
class Person: """ A class to represent a person.… Attributes ---------- name : str first name of the person surname : str family name of the person age : int age of the person Methods ------- info(additional=""): Prints the person's name and age. """ def __init__(self, name, surname, age): """ Constructs all the necessary attributes for the person object. Parameters ---------- name : str first name of the person surname : str family name of the person age : int age of the person """ self.name = name self.surname = surname self.age = age def info(self, additional=""): """ Prints the person's name and age. If the argument 'additional' is passed, then it is appended after the main info. Parameters ---------- additional : str, optional More info to be displayed (default is None) Returns ------- None """ print(f'My name is (self.name) (self.surname). I am (self.age) years old.' + additional)
Here, we can use the following code to access only the docstrings of the Person class:
print(Person.__doc__)
Output
A class to represent a person.… Attributes ---------- name : str first name of the person surname : str family name of the person age : int age of the person Methods ------- info(additional=""): Prints the person's name and age
Using the help() Function for Docstrings
We can also use the help()
function to read the docstrings associated with various objects.
Example 7: Read Docstrings with the help() function
We can use the help()
function on the class Person
in Example 6 as:
help(Person)
Output
Help on class Person in module __main__: class Person(builtins.object) | Person(name, surname, age) | | A class to represent a person. | |… | | Attributes | ---------- | name : str | first name of the person | surname : str | family name of the person | age : int | age of the person | | Methods | ------- | info(additional=""): | Prints the person's name and age. | | Methods defined here: | | __init__(self, name, surname, age) | Constructs all the necessary attributes for the person object. | | Parameters | ---------- | name : str | first name of the person | surname : str | family name of the person | age : int | age of the person | | info(self, additional='') | Prints the person's name and age. | | If the argument 'additional' is passed, then it is appended after the main info. | | Parameters | ---------- | additional : str, optional | More info to be displayed (default is None) | | Returns | ------- | None | | ---------------------------------------------------------------------- | Data descriptors defined here: | | __dict__ | dictionary for instance variables (if defined) | | __weakref__ | list of weak references to the object (if defined)
Here, we can see that the help()
function retrieves the docstrings of the Person
class along with the methods associated with that class.
4. Docstrings for Python Scripts
- The docstrings for Python script should document the script's functions and command-line syntax as a usable message.
- It should serve as a quick reference to all the functions and arguments.
5. Docstrings for Python Packages
The docstrings for a Python package is written in the package's __init__.py file.
- It should contain all the available modules and sub-packages exported by the package.
Docstring Formats
We can write docstring in many formats like the reStructured text (reST) format, Google format or the NumPy documentation format. To learn more, visit Popular Docstring Formats
Kami juga dapat membuat dokumentasi dari docstrings menggunakan alat seperti Sphinx. Untuk mempelajari lebih lanjut, kunjungi Dokumentasi Sphinx Resmi