Docstring

Menulis Function di Python

Shayne Miel

Software Architect @ Duo Security

Fungsi kompleks

def split_and_stack(df, new_names):
  half = int(len(df.columns) / 2)
  left = df.iloc[:, :half]
  right = df.iloc[:, half:]
  return pd.DataFrame(
    data=np.vstack([left.values, right.values]),
    columns=new_names
  )
Menulis Function di Python
def split_and_stack(df, new_names):
  """Membagi kolom DataFrame menjadi dua bagian lalu menumpuknya
  secara vertikal, mengembalikan DataFrame baru dengan `new_names` sebagai
  nama kolom.

  Args:
    df (DataFrame): DataFrame yang akan dibagi.
    new_names (iterable of str): Nama kolom untuk DataFrame baru.

  Returns:
    DataFrame
  """
  half = int(len(df.columns) / 2)
  left = df.iloc[:, :half]
  right = df.iloc[:, half:]
  return pd.DataFrame(
    data=np.vstack([left.values, right.values]),
    columns=new_names
  )
Menulis Function di Python

Anatomi docstring

def function_name(arguments):
  """
  Deskripsi fungsi.

  Deskripsi argumen, jika ada.

  Deskripsi nilai kembalian, jika ada.

  Deskripsi error yang mungkin muncul, jika ada.

  Catatan atau contoh penggunaan opsional.
  """
Menulis Function di Python

Format docstring

  • Gaya Google
  • Numpydoc
  • reStructuredText
  • EpyText
Menulis Function di Python

Gaya Google - deskripsi

def function(arg_1, arg_2=42):
  """Deskripsi fungsi.
  """
Menulis Function di Python

Gaya Google - argumen

def function(arg_1, arg_2=42):
  """Deskripsi fungsi.

  Args:
    arg_1 (str): Deskripsi arg_1 yang bisa berpindah ke baris berikutnya
      jika perlu.
    arg_2 (int, optional): Tulis optional saat argumen punya nilai
      default.
  """
Menulis Function di Python

Gaya Google - nilai kembalian

def function(arg_1, arg_2=42):
  """Deskripsi fungsi.

  Args:
    arg_1 (str): Deskripsi arg_1 yang bisa berpindah ke baris berikutnya
      jika perlu.
    arg_2 (int, optional): Tulis optional saat argumen punya nilai
      default.

  Returns:
    bool: Deskripsi opsional nilai kembalian
    Baris tambahan tidak diindentasi.
  """
Menulis Function di Python
def function(arg_1, arg_2=42):
  """Deskripsi fungsi.

  Args:
    arg_1 (str): Deskripsi arg_1 yang bisa berpindah ke baris berikutnya
      jika perlu.
    arg_2 (int, optional): Tulis optional saat argumen punya nilai
      default.

  Returns:
    bool: Deskripsi opsional nilai kembalian
    Baris tambahan tidak diindentasi.

  Raises:
    ValueError: Cantumkan tipe error yang sengaja
      bisa dinaikkan fungsi.

  Notes:
    Lihat https://www.datacamp.com/community/tutorials/docstrings-python
    untuk info lebih lanjut.  
  """
Menulis Function di Python

Numpydoc

def function(arg_1, arg_2=42):
  """
  Deskripsi fungsi.

  Parameters
  ----------
  arg_1 : tipe yang diharapkan untuk arg_1
    Deskripsi arg_1.
  arg_2 : int, optional
    Tulis optional saat argumen punya nilai default.
    Default=42.

  Returns
  -------
  Tipe nilai kembalian
    Bisa memuat deskripsi nilai kembalian. 
    Ganti "Returns" dengan "Yields" jika fungsi ini generator.
  """
Menulis Function di Python

Mengambil docstring

def the_answer():
  """Mengembalikan jawaban untuk hidup, 
  alam semesta, dan segalanya.

  Returns:
    int
  """
  return 42

print(the_answer.__doc__)
Return the answer to life, 
  the universe, and everything.

  Returns:
    int
import inspect
print(inspect.getdoc(the_answer))
Return the answer to life, 
the universe, and everything.

Returns:
  int
Menulis Function di Python

Ayo berlatih!

Menulis Function di Python

Preparing Video For Download...