Python Basic
Function

Functions in Python

What is Function?

Function adalah blok kode yang terorganisir dan dapat digunakan kembali yang dirancang untuk melakukan tugas tertentu. Functions membantu mengorganisir kode menjadi bagian-bagian yang lebih kecil dan memungkinkan kode untuk digunakan kembali tanpa menulis ulang.

Why Use Functions?

  • Reusability (Dapat Digunakan Kembali): Kode yang sama dapat digunakan berkali-kali
  • Modularity (Modularitas): Memecah program menjadi bagian-bagian yang lebih kecil dan terkelola
  • Abstraction (Abstraksi): Menyembunyikan detail implementasi dari pengguna function
  • Organization (Organisasi): Membuat kode lebih terstruktur dan mudah dibaca

Function Components

1. Basic Function

def sapa():
    print("Hello World!")
 
# Function dengan parameter
def sapa_nama(nama):    # 'nama' adalah parameter
    print(f"Hello {nama}!")
 
# Function dengan return value
def tambah(a, b):
    return a + b    # 'return' mengembalikan nilai
 
# Memanggil function
sapa()                  # Hello World!
sapa_nama("John")       # Hello John!
hasil = tambah(3, 4)    # 7

2. Default Parameters

Default parameters memungkinkan function memiliki nilai default jika tidak ada argumen yang diberikan.

def sapa_lengkap(nama, pesan="Selamat datang"):
    print(f"{pesan}, {nama}!")
 
# Cara pemanggilan
sapa_lengkap("John")                    # Menggunakan default parameter
sapa_lengkap("John", "Selamat pagi")    # Override default parameter

3. *args (Arbitrary Arguments)

*args memungkinkan function menerima jumlah parameter yang tidak terbatas. Parameter disimpan sebagai tuple.

def jumlahkan(*args):
    print("Tipe args:", type(args))    # <class 'tuple'>
    total = 0
    for angka in args:
        total += angka
    return total
 
print(jumlahkan(1, 2, 3))           # 6
print(jumlahkan(1, 2, 3, 4, 5))     # 15

4. **kwargs (Keyword Arguments)

**kwargs memungkinkan function menerima jumlah parameter bernama yang tidak terbatas. Parameter disimpan sebagai dictionary.

def cetak_info(**kwargs):
    print("Tipe kwargs:", type(kwargs))    # <class 'dict'>
    for key, value in kwargs.items():
        print(f"{key}: {value}")
 
cetak_info(nama="John", umur=25, kota="Jakarta")

5. Lambda Functions

Lambda functions adalah anonymous functions yang dapat ditulis dalam satu baris. Berguna untuk operasi sederhana.

# Normal function
def kuadrat(x):
    return x ** 2
 
# Lambda equivalent
kuadrat_lambda = lambda x: x ** 2
 
print(kuadrat(5))        # 25
print(kuadrat_lambda(5)) # 25

6. Function Scope

Python memiliki aturan scope yang menentukan di mana variable dapat diakses.

x = "global"    # Global scope
 
def fungsi():
    y = "local"    # Local scope
    print(x)       # Dapat mengakses variable global
    print(y)       # Dapat mengakses variable local
 
def fungsi_2():
    # print(y)    # Error: tidak dapat mengakses variable local fungsi lain
    x = "local"    # Membuat variable local baru
    print(x)       # Mengakses variable local

7. Docstrings

Docstrings digunakan untuk mendokumentasikan function.

def hitung_luas(panjang: float, lebar: float) -> float:
    """
    Menghitung luas persegi panjang.
 
    Args:
        panjang (float): Panjang persegi panjang
        lebar (float): Lebar persegi panjang
 
    Returns:
        float: Luas persegi panjang
    """
    return panjang * lebar

Best Practices

  1. Nama Function yang Deskriptif

    # Buruk
    def f(x):
        return x * 2
     
    # Baik
    def kalikan_dua(angka):
        return angka * 2
  2. Satu Fungsi, Satu Tugas

    # Buruk
    def proses_data(data):
        # Validasi data
        # Transformasi data
        # Simpan data
        # Kirim email
        pass
     
    # Baik
    def validasi_data(data):
        pass
     
    def transformasi_data(data):
        pass
     
    def simpan_data(data):
        pass
     
    def kirim_email(data):
        pass
  3. Gunakan Type Hints

    def hitung_umur(tahun_lahir: int) -> int:
        return 2024 - tahun_lahir
  4. Return Values yang Konsisten

    # Buruk
    def get_user(id):
        if id == 1:
            return {"name": "John"}
        return None    # Inconsistent return type
     
    # Baik
    def get_user(id):
        if id == 1:
            return {"name": "John"}
        return {}      # Consistent return type

Note:

  • Function adalah building blocks dari program Python
  • Gunakan docstrings untuk dokumentasi
  • Perhatikan scope variables
  • Pisahkan logic yang kompleks menjadi beberapa function
  • Gunakan type hints untuk memperjelas tipe data