Bab 4 Variabel dan Tipe Data

# Variabel dan Assignment

Pelajari cara membuat variabel dan memberi nilai dengan assignment, dari bentuk dasar hingga multiple assignment.

Buka →
# Aturan Penamaan Identifier

Kuasai aturan penamaan identifier Python: karakter yang diizinkan, kata kunci terlarang, dan gaya PEP 8.

Buka →
# Memahami Object dan Reference

Pahami cara variabel Python mengikat object melalui reference, perilaku shared reference, dan perbedaan is dengan ==.

Buka →
# Tipe Data Numerik

Pelajari tipe data numerik Python: int berpresisi tak terbatas, float IEEE 754, complex, dan underscore pada literal.

Buka →
# String

Kenali tipe data str untuk teks: cara membuat string, operasi dasarnya, dan sifat immutable yang khas Python.

Buka →
# Boolean

Pelajari tipe data bool, nilai True dan False, hubungan bool dengan int, serta konsep truthy dan falsy.

Buka →
# None dan NoneType

Pahami nilai None dan tipe NoneType sebagai penanda ketiadaan nilai, termasuk pola is None dan argumen default.

Buka →
# Memeriksa Tipe Data

Pelajari cara memeriksa tipe data dengan type() dan isinstance(), serta alasan isinstance() lebih disarankan.

Buka →
# Type Conversion

Kuasai konversi tipe eksplisit dengan int(), float(), str(), dan bool() beserta error yang menyertainya.

Buka →
# Dynamic Typing

Pahami dynamic typing Python: variabel dapat di-assign ulang ke tipe berbeda, kontras dengan static typing.

Buka →
# Mutable dan Immutable Objects

Pelajari perbedaan object mutable dan immutable, jebakan shared reference pada list, dan tuple berisi list.

Buka →

Bab 6 String dan Text Processing

# Membuat dan Menggabungkan String

Pelajari cara membuat string dengan berbagai tanda kutip serta menggabungkannya dengan operator +, *, dan method join().

Buka →
# Indexing dan Slicing String

Ambil satu karakter atau potongan string dengan indexing, negative index, dan slicing start:stop:step secara lengkap.

Buka →
# String Methods

Kuasai method string paling sering dipakai: upper, lower, strip, replace, startswith, endswith, find, dan count.

Buka →
# String Formatting

Sisipkan nilai ke dalam teks dengan tiga generasi formatting: operator %, method str.format(), dan f-string.

Buka →
# f-strings

Sisipkan nilai dan ekspresi langsung ke dalam string dengan f-string, plus format spec dan trik debugging x=.

Buka →
# split() dan join()

Pecah string menjadi list dengan split(), rsplit(), splitlines(), lalu rakit kembali dengan join() dengan aman.

Buka →
# Searching dan Replacing Text

Temukan teks dengan operator in, find(), dan index(), ganti dengan replace(), plus strategi case-insensitive.

Buka →
# Escape Sequences

Kendalikan karakter khusus di dalam string: pindah baris, tab, tanda kutip, backslash, dan carriage return.

Buka →
# Raw Strings

Matikan perilaku escape dengan prefix r pada string untuk path Windows dan pola regex yang bersih.

Buka →
# Unicode dan Encoding

Pahami perbedaan str dan bytes, konversi lewat UTF-8, serta cara menghindari UnicodeDecodeError di Python.

Buka →
# Pengenalan Regular Expressions

Perkenalan pertama regex di Python: re.search, re.match, pola \d+, dan kapan regex memang dibutuhkan.

Buka →

Bab 10 Fungsi

# Mendefinisikan Fungsi

Pelajari cara mendefinisikan fungsi dengan def, memanggilnya berkali-kali, menulis docstring, dan memahami None.

Buka →
# Parameter dan Argument

Bedakan parameter sebagai nama di definisi fungsi dan argument sebagai nilai saat pemanggilan, beserta aturannya.

Buka →
# Return Value

Pelajari cara mengembalikan nilai dari fungsi, perilaku return yang menghentikan eksekusi, dan bedanya dengan print.

Buka →
# Positional dan Keyword Arguments

Panggil fungsi dengan menyebut nama parameter agar kode lebih jelas, dan pahami aturan mencampur positional dan keyword.

Buka →
# Default Parameters

Beri nilai bawaan pada parameter fungsi, pahami urutan wajibnya, dan hindari jebakan mutable default yang klasik.

Buka →
# Arbitrary Arguments

Terima jumlah argument berapa pun dengan *args dan **kwargs, lalu pakai unpacking saat memanggil fungsi.

Buka →
# Positional-Only dan Keyword-Only Parameters

Kendalikan cara parameter dipanggil dengan penanda / dan * agar signature fungsi lebih jelas dan API lebih stabil.

Buka →
# Scope dan Namespace

Pahami aturan LEGB: bagaimana interpreter Python mencari nama variabel di scope lokal, enclosing, global, dan builtins.

Buka →
# local, global, dan nonlocal

Gunakan kata kunci global dan nonlocal untuk menulis variabel luar, kenali UnboundLocalError, dan praktik terbaiknya.

Buka →
# Recursion

Pelajari fungsi yang memanggil dirinya sendiri: base case, recursive case, RecursionError, dan kapan layak dipilih.

Buka →
# Lambda Functions

Tulis fungsi satu baris tanpa nama dengan lambda, gunakan sebagai key pada sorted, dan kenali batas keterbacaannya.

Buka →
# First-Class Functions

Perlakukan fungsi sebagai nilai: simpan di variabel, kirim sebagai argument, kembalikan dari fungsi lain.

Buka →
# Type Hints pada Fungsi

Tambahkan anotasi tipe pada parameter dan nilai balik fungsi sebagai dokumentasi dan dukungan alat bantu.

Buka →

Bab 13 File Handling

# Membuka dan Menutup File

Pelajari fungsi open(), mode pembukaan berkas, pentingnya close(), serta error umum seperti FileNotFoundError.

Buka →
# Context Manager dan with

Statement with menjamin close() berjalan walau exception terjadi, termasuk bukti lewat atribut closed dan nested with.

Buka →
# Membaca File Teks

Bandingkan read(), readline(), readlines(), dan iterasi baris-per-baris, plus tell(), seek(), dan berkas kosong.

Buka →
# Menulis File Teks

Tulis teks dengan write() dan writelines(), waspadai mode w yang menghapus isi lama, serta kenali mode a dan flush().

Buka →
# Encoding dan Newline

Selalu sertakan encoding=utf-8 pada open(), atur newline Windows dan Unix, lalu kenali mode teks versus mode biner.

Buka →
# Bekerja dengan pathlib

Rakit path dengan operator /, periksa berkas dengan exists(), baca-tulis dengan read_text(), dan cari dengan glob().

Buka →
# Mengelola Direktori

Buat dan hapus direktori dengan mkdir() dan rmdir(), jelajahi dengan iterdir() dan walk(), salin dengan shutil.copy().

Buka →
# Temporary Files

Gunakan TemporaryFile, NamedTemporaryFile, TemporaryDirectory, dan mkdtemp untuk ruang kerja sementara yang aman.

Buka →
# Membaca dan Menulis CSV

Baca dan tulis CSV dengan module csv: writer, reader, DictWriter, DictReader, delimiter, dan aturan kutip yang benar.

Buka →
# Membaca dan Menulis JSON

Serialize data Python ke JSON: json.dump/load untuk berkas, dumps/loads untuk string, plus indent dan ensure_ascii.

Buka →
# Bekerja dengan File Biner

Baca dan tulis bytes dengan mode rb/wb, kenali perbedaan mode biner dan teks, lalu bedah header PNG dengan struct.

Buka →

Bab 14 Object-Oriented Programming

# Memahami Class dan Object

Pahami class sebagai cetak biru dan object sebagai wujud nyatanya, lengkap dengan attribute dan behavior.

Buka →
# Constructor dan __init__

Pelajari cara __init__ mengisi object baru saat dibuat, peran self, dan pembuatan banyak instance sekaligus.

Buka →
# Instance Attributes

Bedah data milik tiap object: penyimpanan per-instance, urutan lookup attribute, dan isi __dict__ yang sebenarnya.

Buka →
# Class Attributes

Kenali data bersama di level class, fallback lookup, jebakan mutable attribute, dan konstanta class.

Buka →
# Instance Methods

Pelajari cara method bekerja lewat self, pemanggilan lewat class, dan __repr__ untuk output yang mudah dibaca.

Buka →
# classmethod dan staticmethod

Bandingkan classmethod dengan staticmethod: alternative constructor, utility function, dan kapan memakainya.

Buka →
# Encapsulation

Pahami konvensi _protected, name mangling dengan __private, dan pratinjau property pada class Python.

Buka →
# Inheritance

Bangun hierarki class dengan inheritance: reuse method, override, extend lewat super(), dan relasi is-a.

Buka →
# Polymorphism

Lihat satu interface menghasilkan banyak perilaku: method override, duck typing, dan protokol seperti len().

Buka →
# Composition

Kenali relasi has-a lewat composition dan delegation, serta kapan komposisi lebih baik daripada inheritance.

Buka →
# Multiple Inheritance

Pelajari sintaks multiple inheritance, diamond problem, dan pola mixin lewat contoh LogMixin yang bekerja.

Buka →
# Method Resolution Order

Bongkar urutan pencarian method (MRO) dengan __mro__, algoritma C3, dan alasan urutan class parent penting.

Buka →
# super()

Kuasai super() pada single inheritance dan cooperative __init__, termasuk mekanisme bentuk tanpa argumen.

Buka →
# Kapan Menggunakan OOP

Kenali sinyal kapan OOP layak dipakai, kapan fungsi biasa atau dataclasses lebih tepat, dan bahaya over-engineering.

Buka →

Bab 18 Virtual Environments dan Dependencies

Bab 23 Testing dan Code Quality

# Dasar-Dasar Software Testing

Pahami mengapa test otomatis penting, test pyramid, pola arrange-act-assert, dan konvensi penamaan test.

Buka →
# Menulis Test dengan pytest

Instal pytest, tulis test pertama dengan assert polos, jalankan dari terminal, dan baca anatomi test yang gagal.

Buka →
# unittest

Gunakan module bawaan unittest: TestCase, keluarga assertEqual, setUp/tearDown, dan perbandingannya dengan pytest.

Buka →
# Assertions

Kuasai assert pada pytest: assert rewriting, pytest.approx untuk float, dan pytest.raises dengan match.

Buka →
# Fixtures

Sediakan data dan objek siap pakai untuk test dengan @pytest.fixture, conftest.py, scope, dan yield untuk teardown.

Buka →
# Parametrized Tests

Uji banyak kombinasi masukan dalam satu fungsi test dengan @pytest.mark.parametrize, ids, dan parametrizing class.

Buka →
# Mocking dan Patching

Isolasi test dari jaringan dan layanan eksternal dengan Mock, patch, return_value, side_effect, dan autospec.

Buka →
# Testing Exceptions

Verifikasi penolakan masukan dengan pytest.raises dan match, exception kustom, serta anti-pola yang harus dihindari.

Buka →
# Code Coverage

Ukur berapa persen kode yang dieksekusi test dengan pytest-cov dan coverage, lalu tafsirkan angkanya dengan sehat.

Buka →
# Linting dan Formatting

Temukan kesalahan sebelum runtime dengan ruff check dan rapikan gaya kode dengan ruff format di pyproject.toml.

Buka →
# Pre-Commit Hooks

Jalankan ruff dan pemeriksaan kecil otomatis setiap kali git commit lewat .pre-commit-config.yaml.

Buka →
# Continuous Integration

Otomatiskan test di GitHub Actions dengan workflow YAML, strategi matrix, badge status, dan disiplin test sebelum merge.

Buka →

Bab 29 Web Development

# Memahami Web Application

Pelajari siklus request-response, peran web framework, frontend vs backend, hingga konsep deployment.

Buka →
# Pengenalan WSGI dan ASGI

Pahami standar WSGI dan ASGI yang menjembatani server web dengan framework Python seperti Flask dan FastAPI.

Buka →
# Pengenalan Flask

Bangun aplikasi web pertama dengan Flask: route, response, test client, mode debug, dan struktur proyek kecil.

Buka →
# Routing dan Request Handling

Kuasai routing Flask: route dinamis, converter, query string, form POST, body JSON, abort, redirect, dan url_for.

Buka →
# Templates dan Static Files

Pisahkan HTML dari Python dengan Jinja2: variabel, loop, kondisi, warisan template, static files, dan flash message.

Buka →
# Forms dan Validation

Tangani form HTML dengan Flask: alur GET-POST, validasi server-side dengan pola errors dict, dan token CSRF manual.

Buka →
# Pengenalan Django

Kenalkan Django 6: startproject, startapp, pola MTV, view dan URLconf, hingga pengaturan penting settings.py.

Buka →
# Models dan ORM

Ubah class Python menjadi tabel database dengan model Django: field, migrations, dan query lewat ORM.

Buka →
# Pengenalan FastAPI

Bangun API modern dengan FastAPI: validasi otomatis dari type hints, response_model, dan dokumentasi Swagger.

Buka →
# Dependency Injection

Pahami dependency injection di FastAPI: Depends untuk parameter query, class dependency, dan override saat testing.

Buka →
# Memilih Framework Web

Bandingkan Flask, Django, dan FastAPI secara objektif: tabel perbandingan, alur keputusan, dan faktor non-teknis.

Buka →

Bab 30 API Development

# Desain REST API

Rancang REST API yang konsisten: penamaan resource, semantik method HTTP, idempotency, dan pemilihan status code.

Buka →
# Membuat API dengan FastAPI

Bangun API manajemen tugas dengan FastAPI: path operations, path dan query parameter, serta pengujian TestClient.

Buka →
# Request Models dan Validation

Validasi request body dengan Pydantic: field wajib, nilai default, Optional, dan constraint seperti min_length dan ge.

Buka →
# Response Models

Kontrol bentuk response dengan response_model: filter field rahasia seperti password dan pisahkan model input-output.

Buka →
# Status Codes dan Error Responses

Kirim status code yang tepat: 201 untuk POST, 204 untuk DELETE, serta error 404 dan 400 lewat HTTPException.

Buka →
# Pagination, Filtering, dan Sorting

Bangun endpoint daftar yang rapi: pagination, filtering, sorting sort=-field, dan metadata total serta has_next.

Buka →
# Authentication dan Authorization

Amankan API dengan API key header dan pahami konsep JWT, alur OAuth2, serta beda authentication dan authorization.

Buka →
# OpenAPI dan API Documentation

Pahami skema OpenAPI yang dibangkitkan FastAPI, akses Swagger UI dan ReDoc, lalu perkaya dengan tags dan examples.

Buka →
# API Testing

Uji REST API dengan TestClient dan pytest: fixture, pola Arrange-Act-Assert, dependency_overrides, dan kasus tepi.

Buka →
# Versioning dan Backward Compatibility

Kelola evolusi API: versioning URL, header, atau query, perubahan additive aman, siklus deprecation, dan changelog.

Buka →