Bab 1 Pengenalan Python
Kenali Python, bahasa pemrograman tingkat tinggi yang serbaguna dengan penekanan pada keterbacaan kode.
Buka → # Kegunaan dan Ekosistem PythonPeta kegunaan Python dari web hingga machine learning beserta ekosistem package yang menopangnya.
Buka → # Bagaimana Python BekerjaTelusuri perjalanan kode Python dari source code menjadi bytecode hingga dieksekusi interpreter.
Buka → # Python vs Bahasa Pemrograman LainBandingkan Python dengan bahasa lain dari sisi typing, kecepatan, dan ekosistem untuk memilih dengan sadar.
Buka → # Versi Python dan KompatibilitasPahami penomoran versi Python, siklus dukungan, dan cara menjaga kompatibilitas kode antar versi.
Buka → # Memahami Interpreter dan RuntimeKenali CPython, implementasi resmi Python, serta layanan runtime seperti memory management dan dynamic typing.
Buka →Bab 2 Instalasi dan Lingkungan Pengembangan
Panduan memasang Python di Windows, macOS, dan Linux dari installer resmi python.org.
Buka → # Memverifikasi Instalasi PythonCara memastikan Python terpasang dan dapat dipanggil dari terminal dengan perintah verifikasi yang tepat.
Buka → # Menggunakan Python InterpreterJalankan interpreter Python dalam berbagai mode: REPL, opsi -c untuk satu baris, dan opsi -m untuk module.
Buka → # Menggunakan Python REPLGunakan REPL sebagai laboratorium cepat untuk mencoba expression dan melihat hasilnya seketika.
Buka → # Menjalankan File PythonSimpan kode dalam file .py dan jalankan dari terminal, lengkap dengan shebang dan izin eksekusi.
Buka → # Memilih Code EditorKriteria memilih code editor untuk Python beserta perbandingan VS Code, PyCharm, dan editor lainnya.
Buka → # Menggunakan TerminalKuasai perintah terminal dasar dan jalankan program Python langsung dari baris perintah.
Buka → # Memahami PYTHONPATHPahami sys.path dan PYTHONPATH untuk menelusuri bagaimana Python menemukan module saat import.
Buka → # Memecahkan Masalah InstalasiDiagnosis dan solusi masalah instalasi Python yang paling umum, mulai dari PATH hingga konflik versi.
Buka →Bab 3 Menjalankan Program Python
Tulis file hello.py pertama Anda, jalankan dengan python3, dan pahami cara interpreter mengeksekusinya.
Buka → # Struktur File PythonPahami anatomi file .py: teks biasa berformat UTF-8, urutan bagian kode, dan aturan penamaan file Python.
Buka → # Memahami Sintaks PythonPahami aturan sintaks Python: eksekusi berurutan, case sensitivity, keyword, dan satu statement per baris.
Buka → # Indentasi dan Code BlockKuasai indentasi sebagai penentu code block Python, aturan empat spasi, dan cara membaca IndentationError dan TabError.
Buka → # Komentar dan DocstringTulis komentar dan docstring untuk mendokumentasikan kode, lalu akses docstring lewat __doc__ dan help().
Buka → # Statement dan ExpressionBedakan statement sebagai instruksi lengkap dan expression sebagai kode yang menghasilkan nilai di Python.
Buka → # Menggunakan print()Kuasai function print(): mencetak banyak nilai sekaligus, mengatur parameter sep dan end, serta pengantar f-string.
Buka → # Membaca Input PenggunaGunakan function input() untuk membaca ketikan pengguna, konversi ke angka dengan int(), dan kenali EOFError.
Buka → # Memahami SyntaxErrorBaca anatomi pesan SyntaxError Python, pahami pola kesalahan umum pemula, dan manfaatkan petunjuk yang diberikannya.
Buka →Bab 4 Variabel dan Tipe Data
Pelajari cara membuat variabel dan memberi nilai dengan assignment, dari bentuk dasar hingga multiple assignment.
Buka → # Aturan Penamaan IdentifierKuasai aturan penamaan identifier Python: karakter yang diizinkan, kata kunci terlarang, dan gaya PEP 8.
Buka → # Memahami Object dan ReferencePahami cara variabel Python mengikat object melalui reference, perilaku shared reference, dan perbedaan is dengan ==.
Buka → # Tipe Data NumerikPelajari tipe data numerik Python: int berpresisi tak terbatas, float IEEE 754, complex, dan underscore pada literal.
Buka → # StringKenali tipe data str untuk teks: cara membuat string, operasi dasarnya, dan sifat immutable yang khas Python.
Buka → # BooleanPelajari tipe data bool, nilai True dan False, hubungan bool dengan int, serta konsep truthy dan falsy.
Buka → # None dan NoneTypePahami nilai None dan tipe NoneType sebagai penanda ketiadaan nilai, termasuk pola is None dan argumen default.
Buka → # Memeriksa Tipe DataPelajari cara memeriksa tipe data dengan type() dan isinstance(), serta alasan isinstance() lebih disarankan.
Buka → # Type ConversionKuasai konversi tipe eksplisit dengan int(), float(), str(), dan bool() beserta error yang menyertainya.
Buka → # Dynamic TypingPahami dynamic typing Python: variabel dapat di-assign ulang ke tipe berbeda, kontras dengan static typing.
Buka → # Mutable dan Immutable ObjectsPelajari perbedaan object mutable dan immutable, jebakan shared reference pada list, dan tuple berisi list.
Buka →Bab 5 Operator dan Expression
Pelajari operator aritmatika Python, beda pembagian / dan //, modulo, divmod, hingga penanganan ZeroDivisionError.
Buka → # Operator PerbandinganPelajari operator perbandingan Python: ==, !=, <, >, <=, >=, chained comparison, dan beda == dengan is.
Buka → # Operator LogikaPelajari operator and, or, dan not: truth table, nilai balik berupa operan (bukan bool), dan contoh kombinasinya.
Buka → # Operator AssignmentPelajari operator assignment Python: penugasan =, augmented operator += -= *=, penugasan ganda, swap, dan walrus.
Buka → # Operator BitwisePelajari operator bitwise Python: & | ^ ~ << >>, representasi biner dengan bin(), dan penerapan flag dan bitmask.
Buka → # Operator KeanggotaanPelajari operator in dan not in Python: pengujian keanggotaan pada string, list, tuple, set, dan dictionary.
Buka → # Operator IdentityPelajari operator identity is dan is not Python: perbedaan dengan ==, idiom is None, serta interning pada CPython.
Buka → # Precedence dan AssociativityPelajari precedence dan associativity operator Python: tabel prioritas, asosiativitas kanan, dan anjuran tanda kurung.
Buka → # Truthiness dan Short-CircuitPelajari nilai truthy/falsy Python, konversi bool(), evaluasi short-circuit, guard clause, dan idiom x or default.
Buka →Bab 6 String dan Text Processing
Pelajari cara membuat string dengan berbagai tanda kutip serta menggabungkannya dengan operator +, *, dan method join().
Buka → # Indexing dan Slicing StringAmbil satu karakter atau potongan string dengan indexing, negative index, dan slicing start:stop:step secara lengkap.
Buka → # String MethodsKuasai method string paling sering dipakai: upper, lower, strip, replace, startswith, endswith, find, dan count.
Buka → # String FormattingSisipkan nilai ke dalam teks dengan tiga generasi formatting: operator %, method str.format(), dan f-string.
Buka → # f-stringsSisipkan 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 TextTemukan teks dengan operator in, find(), dan index(), ganti dengan replace(), plus strategi case-insensitive.
Buka → # Escape SequencesKendalikan karakter khusus di dalam string: pindah baris, tab, tanda kutip, backslash, dan carriage return.
Buka → # Raw StringsMatikan perilaku escape dengan prefix r pada string untuk path Windows dan pola regex yang bersih.
Buka → # Unicode dan EncodingPahami perbedaan str dan bytes, konversi lewat UTF-8, serta cara menghindari UnicodeDecodeError di Python.
Buka → # Pengenalan Regular ExpressionsPerkenalan pertama regex di Python: re.search, re.match, pola \d+, dan kapan regex memang dibutuhkan.
Buka →Bab 7 Control Flow
Pelajari percabangan if, elif, dan else di Python, termasuk truthiness dan pengaruh urutan kondisi.
Buka → # Nested ConditionsRapikan kondisi bersarang: ratakan dengan operator and, or, dan terapkan pola early return agar mudah dibaca.
Buka → # for LoopsPelajari perulangan for di Python untuk mengiterasi list, tuple, string, dan dictionary secara langsung tanpa indeks.
Buka → # while LoopsPelajari perulangan while di Python: pola counter, bahaya infinite loop, dan validasi input dengan break.
Buka → # range()Pelajari fungsi range() di Python: argumen start, stop, step, sifat lazy evaluation, dan jebakan off-by-one.
Buka → # break dan continueKendalikan loop dengan break untuk berhenti lebih awal dan continue untuk melewati iterasi, termasuk di nested loop.
Buka → # passPelajari pernyataan pass sebagai placeholder blok kode yang masih kosong dan perbandingannya dengan Ellipsis (...).
Buka → # else pada LoopPahami blok else pada for dan while yang hanya dieksekusi bila loop selesai tanpa break, beserta jebakannya.
Buka → # match-casePelajari structural pattern matching di Python 3.10: pola literal, sequence, mapping, guard, hingga class pattern.
Buka → # Memilih Struktur Control FlowPilih struktur control flow yang tepat dengan tabel keputusan, diagram alur, dan prinsip keterbacaan kode.
Buka →Bab 8 Struktur Data Dasar
Pelajari cara membuat, mengakses, dan mengolah list, struktur data paling serbaguna di Python.
Buka → # TuplePelajari tuple: struktur data terurut yang immutable, dari packing dan unpacking hingga tuple sebagai key dictionary.
Buka → # SetPelajari set: struktur data tanpa duplikat dengan operasi himpunan union, intersection, dan difference.
Buka → # DictionaryPelajari dictionary: struktur pasangan key-value untuk pencarian cepat, dari akses .get() hingga nested dictionary.
Buka → # Indexing dan Slicing CollectionsPelajari indexing dan slicing pada list, tuple, dan string beserta indeks negatif dan pola start:stop:step.
Buka → # Menambah, Mengubah, dan Menghapus ElemenPelajari cara menambah, mengubah, dan menghapus elemen pada list, set, dan dictionary beserta error yang muncul.
Buka → # Iterasi CollectionsPelajari iterasi list, set, dan dictionary dengan for, enumerate(), sorted(), serta jebakan mutasi saat iterasi.
Buka → # Nested Data StructuresPelajari struktur data bersarang seperti list of dictionaries dan matriks, plus cara membangunnya secara bertahap.
Buka → # Shallow Copy dan Deep CopyPelajari perbedaan assignment, shallow copy, dan deep copy beserta jebakan mutasi list bersarang di copy module.
Buka → # Memilih Struktur DataPelajari cara memilih list, tuple, set, atau dictionary berdasarkan urutan, mutabilitas, duplikat, dan performa.
Buka →Bab 9 Comprehensions dan Iterators
Bangun list baru dalam satu ekspresi ringkas: transformasi, penyaringan dengan if, hingga comprehension bersarang.
Buka → # Set ComprehensionsPelajari set comprehension {expr for ...} untuk deduplikasi, penyaringan, dan perbandingannya dengan konstruktor set().
Buka → # Dictionary ComprehensionsBangun dictionary dengan {k: v for ...}: hitung nilai, balik key-value, saring item, dan bandingkan dengan fromkeys.
Buka → # Generator ExpressionsHemat memori dengan generator expression (expr for ...): evaluasi lazy untuk sum, max, dan any tanpa list perantara.
Buka → # Iterable dan IteratorPahami protokol iterable-iterator, mekanisme for loop di balik layar, dan alasan iterator hanya bisa dijalankan sekali.
Buka → # iter() dan next()Kendalikan iterasi manual dengan iter() dan next(): kursor independen, nilai default, dan jebakan mutasi saat iterasi.
Buka → # enumerate()Dapatkan posisi dan nilai sekaligus dengan enumerate() plus parameter start, menggantikan pola range(len(...)).
Buka → # zip()Jalin beberapa list dengan zip(): pasangkan elemen, tangani panjang berbeda dengan strict, unzip, dan bangun dictionary.
Buka → # reversed() dan sorted()Baca data dari belakang dengan reversed() dan urutkan dengan sorted() memakai key, reverse, serta sort yang stabil.
Buka →Bab 10 Fungsi
Pelajari cara mendefinisikan fungsi dengan def, memanggilnya berkali-kali, menulis docstring, dan memahami None.
Buka → # Parameter dan ArgumentBedakan parameter sebagai nama di definisi fungsi dan argument sebagai nilai saat pemanggilan, beserta aturannya.
Buka → # Return ValuePelajari cara mengembalikan nilai dari fungsi, perilaku return yang menghentikan eksekusi, dan bedanya dengan print.
Buka → # Positional dan Keyword ArgumentsPanggil fungsi dengan menyebut nama parameter agar kode lebih jelas, dan pahami aturan mencampur positional dan keyword.
Buka → # Default ParametersBeri nilai bawaan pada parameter fungsi, pahami urutan wajibnya, dan hindari jebakan mutable default yang klasik.
Buka → # Arbitrary ArgumentsTerima jumlah argument berapa pun dengan *args dan **kwargs, lalu pakai unpacking saat memanggil fungsi.
Buka → # Positional-Only dan Keyword-Only ParametersKendalikan cara parameter dipanggil dengan penanda / dan * agar signature fungsi lebih jelas dan API lebih stabil.
Buka → # Scope dan NamespacePahami aturan LEGB: bagaimana interpreter Python mencari nama variabel di scope lokal, enclosing, global, dan builtins.
Buka → # local, global, dan nonlocalGunakan kata kunci global dan nonlocal untuk menulis variabel luar, kenali UnboundLocalError, dan praktik terbaiknya.
Buka → # RecursionPelajari fungsi yang memanggil dirinya sendiri: base case, recursive case, RecursionError, dan kapan layak dipilih.
Buka → # Lambda FunctionsTulis fungsi satu baris tanpa nama dengan lambda, gunakan sebagai key pada sorted, dan kenali batas keterbacaannya.
Buka → # First-Class FunctionsPerlakukan fungsi sebagai nilai: simpan di variabel, kirim sebagai argument, kembalikan dari fungsi lain.
Buka → # Type Hints pada FungsiTambahkan anotasi tipe pada parameter dan nilai balik fungsi sebagai dokumentasi dan dukungan alat bantu.
Buka →Bab 11 Modules dan Packages
Pelajari tiga bentuk dasar import module serta mekanisme di balik layar yang menjalankan dan mengingatnya.
Buka → # Membuat Module SendiriPraktik membuat module sendiri dari file .py, mengimpornya dari folder yang sama, dan mengenali efek saat import.
Buka → # Import StatementBedah empat bentuk statement import beserta risikonya, dari import biasa dan alias sampai star import.
Buka → # Module Search PathTelusuri urutan sys.path, file .pyc di dalam __pycache__, dan bahaya module shadowing yang menimpa standard library.
Buka → # Package dan SubpackageKelompokkan module ke dalam package dan subpackage berisi __init__.py, lalu akses isinya lewat nama bertitik.
Buka → # __init__.pyPahami peran __init__.py: kode yang berjalan saat package diimpor dan cara membentuk API publik dengan __all__.
Buka → # Absolute dan Relative ImportsBandingkan absolute dan relative import di dalam package beserta aturan kapan masing-masing layak dipilih.
Buka → # Main Module dan __name__Kuasai mekanisme __name__ dan pola if __name__ == __main__ agar satu file bisa dijalankan sekaligus diimpor aman.
Buka → # Module DiscoveryJelajahi isi module dengan dir(), __dict__, dan help(), lalu lacak lokasi file module dengan importlib.
Buka → # Merancang Struktur PackageRancang struktur package yang rapi: aturan penamaan, prinsip kohesi, flat vs src layout, dan circular import.
Buka →Bab 12 Exception Handling
Pelajari apa itu exception Python: object yang bisa diperiksa, perilaku default saat crash, dan filosofi EAFP.
Buka → # try dan exceptTangkap exception dengan try dan except: handler spesifik, bahaya bare except, dan akses exception as e.
Buka → # Menangani Beberapa ExceptionsTangani beberapa exception sekaligus dengan tuple, handler terpisah, dan aturan urutan klausa except yang tepat.
Buka → # else dan finallyGunakan else untuk jalur sukses dan finally untuk pembersihan yang selalu berjalan, termasuk saat ada return.
Buka → # raiseBangkitkan exception sendiri dengan raise: validasi, re-raise dengan raise kosong, raise from, dan from None.
Buka → # Membuat Custom ExceptionsBuat class exception sendiri dengan atribut kustom dan rancang hierarki error khas domain aplikasi Anda.
Buka → # Exception ChainingPahami exception chaining: __cause__ untuk penyebab eksplisit, __context__ untuk konteks implisit, dan from None.
Buka → # Exception HierarchyTelusuri pohon class BaseException, alasan menangkap Exception bukan BaseException, dan exception bawaan yang umum.
Buka → # Merancang Error HandlingRancang strategi error handling: tangani hanya yang bisa ditangani, fail fast, jangan telan error, dan logging.
Buka →Bab 13 File Handling
Pelajari fungsi open(), mode pembukaan berkas, pentingnya close(), serta error umum seperti FileNotFoundError.
Buka → # Context Manager dan withStatement with menjamin close() berjalan walau exception terjadi, termasuk bukti lewat atribut closed dan nested with.
Buka → # Membaca File TeksBandingkan read(), readline(), readlines(), dan iterasi baris-per-baris, plus tell(), seek(), dan berkas kosong.
Buka → # Menulis File TeksTulis teks dengan write() dan writelines(), waspadai mode w yang menghapus isi lama, serta kenali mode a dan flush().
Buka → # Encoding dan NewlineSelalu sertakan encoding=utf-8 pada open(), atur newline Windows dan Unix, lalu kenali mode teks versus mode biner.
Buka → # Bekerja dengan pathlibRakit path dengan operator /, periksa berkas dengan exists(), baca-tulis dengan read_text(), dan cari dengan glob().
Buka → # Mengelola DirektoriBuat dan hapus direktori dengan mkdir() dan rmdir(), jelajahi dengan iterdir() dan walk(), salin dengan shutil.copy().
Buka → # Temporary FilesGunakan TemporaryFile, NamedTemporaryFile, TemporaryDirectory, dan mkdtemp untuk ruang kerja sementara yang aman.
Buka → # Membaca dan Menulis CSVBaca dan tulis CSV dengan module csv: writer, reader, DictWriter, DictReader, delimiter, dan aturan kutip yang benar.
Buka → # Membaca dan Menulis JSONSerialize data Python ke JSON: json.dump/load untuk berkas, dumps/loads untuk string, plus indent dan ensure_ascii.
Buka → # Bekerja dengan File BinerBaca 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
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 AttributesBedah data milik tiap object: penyimpanan per-instance, urutan lookup attribute, dan isi __dict__ yang sebenarnya.
Buka → # Class AttributesKenali data bersama di level class, fallback lookup, jebakan mutable attribute, dan konstanta class.
Buka → # Instance MethodsPelajari cara method bekerja lewat self, pemanggilan lewat class, dan __repr__ untuk output yang mudah dibaca.
Buka → # classmethod dan staticmethodBandingkan classmethod dengan staticmethod: alternative constructor, utility function, dan kapan memakainya.
Buka → # EncapsulationPahami konvensi _protected, name mangling dengan __private, dan pratinjau property pada class Python.
Buka → # InheritanceBangun hierarki class dengan inheritance: reuse method, override, extend lewat super(), dan relasi is-a.
Buka → # PolymorphismLihat satu interface menghasilkan banyak perilaku: method override, duck typing, dan protokol seperti len().
Buka → # CompositionKenali relasi has-a lewat composition dan delegation, serta kapan komposisi lebih baik daripada inheritance.
Buka → # Multiple InheritancePelajari sintaks multiple inheritance, diamond problem, dan pola mixin lewat contoh LogMixin yang bekerja.
Buka → # Method Resolution OrderBongkar 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 OOPKenali sinyal kapan OOP layak dipakai, kapan fungsi biasa atau dataclasses lebih tepat, dan bahaya over-engineering.
Buka →Bab 15 Advanced Data Modeling
Ubah class data menjadi deklaratif dengan @dataclass: __init__, __repr__, dan __eq__ dibuat otomatis.
Buka → # namedtupleBeri nama pada posisi tuple dengan namedtuple dan typing.NamedTuple untuk record immutable yang ringan.
Buka → # EnumKelompokkan konstanta bernama dengan Enum: nilai aman dari typo, bisa diiterasi, dan bisa dicek keanggotaannya.
Buka → # PropertiesUbah atribut menjadi nilai terhitung dan tambahkan validasi lewat @property tanpa mengubah cara pemanggil.
Buka → # DescriptorsPahami protokol descriptor __get__, __set__, dan __set_name__ yang menjadi fondasi property dan ORM framework.
Buka → # __slots__Batasi atribut instance dengan __slots__, hemat memori signifikan, dan kenali jebakan inheritance-nya.
Buka → # Abstract Base ClassesDefinisikan kontrak interface dengan abc.ABC dan @abstractmethod agar subclass wajib mengimplementasikan method.
Buka → # Protocols dan Structural SubtypingKenali duck typing versi static: class apa pun yang punya method sesuai Protocol dianggap kompatibel.
Buka → # Special Methods dan Data ModelSelami data model Python: __repr__, __len__, __iter__, __getitem__, __call__, dan cara interpreter memanggilnya.
Buka → # Operator OverloadingBuat class Money dan VersiRilis dengan operator +, -, ==, < sendiri, plus kontrak __eq__ dan __hash__.
Buka →Bab 16 Decorators dan Generators
Bangun decorator secara manual tanpa sintaks @, lalu lihat bahwa @ hanyalah pintasan pembungkusan fungsi.
Buka → # Function DecoratorsTulis decorator praktis: pengukur waktu, penghitung pemanggilan, stacking order, dan bukti eksekusi saat def.
Buka → # Decorators dengan ArgumentsBuat decorator yang menerima pengaturan sendiri lewat tiga lapis closure: factory, decorator, lalu pembungkus.
Buka → # functools.wrapsPulihkan __name__, __doc__, dan tanda tangan fungsi yang tertimpa decorator dengan @functools.wraps.
Buka → # yield dan Generator FunctionsPelajari yield yang menjeda fungsi, generator object, next() sebagai penggerak, StopIteration, dan hemat memori.
Buka → # Generator LifecycleTelusuri siklus hidup generator: jeda di yield, kehabisan nilai, close() dengan GeneratorExit, dan send().
Buka → # yield fromDelegasikan aliran ke generator lain dengan yield from: gabungkan sub-generator, ratakan list bersarang, tangkap return.
Buka → # Lazy EvaluationRangkai generator menjadi pipeline yang menyaring dan mengubah data satu per satu tanpa memuat semuanya ke memori.
Buka →Bab 17 Type Hints dan Static Analysis
Pahami mengapa anotasi tipe menjadi tulang punggung kode besar dan bagaimana gradual typing membuat adopsinya bertahap.
Buka → # Built-in Generic TypesGunakan list[int], dict[str, int], tuple[int, ...], dan set[str] untuk menandai isi koleksi dengan anotasi modern.
Buka → # Union dan Optional TypesNyatakan nilai yang mungkin kosong atau punya beberapa tipe dengan Union X | Y, Optional, dan pola None default.
Buka → # Callable dan Type AliasesTipkan function sebagai nilai dengan Callable, ringkas tipe panjang dengan alias, dan kenali statement type Python 3.12.
Buka → # Generic TypesTulis function dan class yang bekerja untuk banyak tipe lewat TypeVar, Generic[T], bound, dan constrained type variable.
Buka → # TypedDictBeri nama pada bentuk dictionary dengan TypedDict: key opsional, struktur bersarang, dan perbandingan dengan dataclass.
Buka → # Protocol dan Structural TypingDefinisikan kontrak method dengan typing.Protocol dan pahami structural typing serta batasan runtime_checkable.
Buka → # OverloadUraikan beberapa signature dalam satu function dengan @overload agar checker memahami tipe masukan dan keluaran.
Buka → # Memahami Static Type CheckingKetahui apa yang bisa dan tidak bisa ditangkap static type checker sebelum menjalankan program.
Buka → # Menggunakan mypy atau PyrightJalankan mypy dari terminal, aktifkan --strict, simpan konfigurasi di pyproject.toml, dan bandingkan dengan Pyright.
Buka →Bab 18 Virtual Environments dan Dependencies
Kenali konsep package, distribution, PyPI, dan site-packages serta perbedaan import name dan distribution name.
Buka → # Menggunakan pipGunakan pip untuk menginstal, memeriksa, meng-upgrade, dan menghapus package berikut version specifier-nya.
Buka → # Membuat Virtual EnvironmentBuat environment terisolasi per proyek dengan python -m venv dan pahami struktur direktorinya.
Buka → # Mengaktifkan dan Menonaktifkan venvAktifkan venv di berbagai shell, verifikasi interpreter yang dipakai, lalu nonaktifkan dengan deactivate.
Buka → # requirements.txtDokumentasikan dependency proyek dengan pip freeze dan pasang ulang lewat pip install -r untuk tim.
Buka → # pyproject.tomlTulis metadata package modern di pyproject.toml dengan tabel [project] mengikuti standar PEP 621.
Buka → # Dependency PinningPahami semantic versioning dan operator ==, >=, ~= untuk memilih strategi pinning versi yang tepat.
Buka → # Memahami LockfilesKunci seluruh pohon dependency secara reproducible dengan lockfile dari pip-tools, Poetry, atau uv.
Buka → # Editable InstallInstal package sendiri dengan pip install -e . agar perubahan kode langsung terpakai tanpa instal ulang.
Buka → # Membangun Python PackageSusun anatomi package dengan src layout, lengkapi metadata, dan bangun sdist serta wheel dengan python -m build.
Buka → # Mendistribusikan Python PackagePublikasikan package ke TestPyPI dan PyPI dengan twine upload, dari pengecekan nama hingga etika versioning.
Buka →Bab 19 Standard Library
Kuasai module math dan statistics untuk pembulatan, faktorial, dan statistik deskriptif dengan data nyata.
Buka → # random dan secretsGunakan random untuk simulasi yang deterministik dengan seed, dan secrets untuk token dan password yang aman.
Buka → # datetime dan zoneinfoPetakan kelas-kelas inti module datetime dan zoneinfo, dari date hingga konversi zona waktu Asia/Jakarta.
Buka → # decimal dan fractionsSelesaikan masalah presisi float dengan Decimal untuk uang dan Fraction untuk aritmetika eksak.
Buka → # collectionsKelompokkan data dengan Counter, defaultdict, deque, dan ChainMap tanpa menulis logika manual.
Buka → # itertoolsBangun pipeline iterator efisien: count, chain, product, permutations, hingga groupby yang harus diurutkan dulu.
Buka → # functoolsPercepat function dengan lru_cache, kunci argumen dengan partial, dan dispatch berdasarkan tipe dengan singledispatch.
Buka → # Module operatorGantikan lambda pendek dengan itemgetter, attrgetter, dan methodcaller yang lebih cepat dan jelas.
Buka → # Module enumResep praktis module enum: iterasi __members__, StrEnum, state machine, dan nilai konfigurasi yang aman.
Buka → # pprintBaca struktur data bersarang dengan mudah memakai pprint, atur width dan depth, serta pformat untuk logging.
Buka → # textwrapFormat keluaran teks rapi dengan wrap, fill, indent, dedent, dan shorten dari module textwrap.
Buka →Bab 20 Dates, Times, dan Localization
Kenali class date dan time dari module datetime beserta atribut, perbandingan, dan sifatnya yang immutable.
Buka → # datetime dan timedeltaGabungkan tanggal dan jam dengan class datetime, lalu hitung durasi dan selisih waktu memakai timedelta.
Buka → # Timezone-Aware datetimePahami beda naive dan aware datetime, buat offset tetap dengan timezone, dan konversi zona dengan astimezone.
Buka → # zoneinfoGunakan nama zona IANA seperti Asia/Jakarta lewat zoneinfo, pahami lompatan DST, dan konversi lintas kota.
Buka → # Parsing dan Formatting datetimeUbah datetime menjadi teks dengan strftime, teks menjadi datetime dengan strptime, dan parsing ISO 8601.
Buka → # Locale dan FormattingBandingkan module locale, pemetaan manual, dan pustaka babel untuk menampilkan tanggal dan angka gaya Indonesia.
Buka → # Menangani Waktu dengan AmanTerapkan aturan aman: simpan UTC, validasi parsing, waspadai tepi DST, pakai timestamp, dan injeksi jam saat uji.
Buka →Bab 21 Regular Expressions dan Parsing
Bangun pola regex dari atom dasarnya: karakter literal, wildcard titik, shorthand classes, anchor, dan escape.
Buka → # Character Classes dan QuantifiersRangkai pola dengan character classes, rentang, negasi, serta quantifier bintang, plus, tanya, dan kurung kurawal.
Buka → # Groups dan CapturesAmbil bagian penting dari teks memakai capture groups, named groups, non-capturing group, dan backreference.
Buka → # Searching dan MatchingPilih fungsi yang tepat: re.search, re.match, re.fullmatch, findall, finditer, dan pola hasil re.compile.
Buka → # SubstitutionsGanti teks berpola dengan re.sub: backreference, replacement function, serta re.subn untuk menghitung penggantian.
Buka → # Flags dan LookaroundsAtur perilaku regex lewat flags IGNORECASE, MULTILINE, DOTALL, VERBOSE dan periksa konteks dengan lookaround.
Buka → # Kapan Tidak Menggunakan RegexKenali saat regex jadi alat yang salah: parsing HTML, format terstruktur, dan catastrophic backtracking.
Buka →Bab 22 Functional Programming
Kenali dua aturan pure function, kontrasnya dengan impure function, dan terapkan pola functional core, imperative shell.
Buka → # ImmutabilityGunakan tuple, frozenset, dan frozen dataclass untuk menghindari bug shared mutable state dengan disiplin copy-on-write.
Buka → # Higher-Order FunctionsSusun kode fleksibel dengan pola strategy dan dispatch dictionary sebagai pengganti rantai if-elif yang terus memanjang.
Buka → # map, filter, dan reduceKuasai trio transformasi data: map dan filter yang lazy, reduce dari functools, serta kapan comprehension lebih baik.
Buka → # ClosuresBedah cara function menangkap variabel lewat __closure__, bangun counter factory, dan hindari jebakan late binding.
Buka → # Function CompositionRangkai function kecil menjadi pipeline dengan compose, pipe, dan functools.partial untuk alur data yang jelas.
Buka → # Functional vs Object-OrientedBandingkan dua paradigma lewat kasus keranjang belanja yang sama, lalu pilih gaya secara pragmatis ala Python.
Buka →Bab 23 Testing dan Code Quality
Pahami mengapa test otomatis penting, test pyramid, pola arrange-act-assert, dan konvensi penamaan test.
Buka → # Menulis Test dengan pytestInstal pytest, tulis test pertama dengan assert polos, jalankan dari terminal, dan baca anatomi test yang gagal.
Buka → # unittestGunakan module bawaan unittest: TestCase, keluarga assertEqual, setUp/tearDown, dan perbandingannya dengan pytest.
Buka → # AssertionsKuasai assert pada pytest: assert rewriting, pytest.approx untuk float, dan pytest.raises dengan match.
Buka → # FixturesSediakan data dan objek siap pakai untuk test dengan @pytest.fixture, conftest.py, scope, dan yield untuk teardown.
Buka → # Parametrized TestsUji banyak kombinasi masukan dalam satu fungsi test dengan @pytest.mark.parametrize, ids, dan parametrizing class.
Buka → # Mocking dan PatchingIsolasi test dari jaringan dan layanan eksternal dengan Mock, patch, return_value, side_effect, dan autospec.
Buka → # Testing ExceptionsVerifikasi penolakan masukan dengan pytest.raises dan match, exception kustom, serta anti-pola yang harus dihindari.
Buka → # Code CoverageUkur berapa persen kode yang dieksekusi test dengan pytest-cov dan coverage, lalu tafsirkan angkanya dengan sehat.
Buka → # Linting dan FormattingTemukan kesalahan sebelum runtime dengan ruff check dan rapikan gaya kode dengan ruff format di pyproject.toml.
Buka → # Pre-Commit HooksJalankan ruff dan pemeriksaan kecil otomatis setiap kali git commit lewat .pre-commit-config.yaml.
Buka → # Continuous IntegrationOtomatiskan test di GitHub Actions dengan workflow YAML, strategi matrix, badge status, dan disiplin test sebelum merge.
Buka →Bab 24 Debugging dan Logging
Pelajari cara membaca traceback Python dari baris terakhir ke awal: anatomi frame, error umum, dan traceback berantai.
Buka → # Debugging dengan print()Isolasi bug dengan print(): label variabel dengan f-string {var=}, repr untuk membedakan tipe, dan batasannya.
Buka → # Menggunakan Python DebuggerPelajari pdb bawaan Python: breakpoint(), perintah n, s, p, l, c, post-mortem debugging, dan conditional breakpoint.
Buka → # Module loggingGanti print() dengan module logging: basicConfig, level, format, konvensi getLogger(__name__), dan hierarki logger.
Buka → # Logging LevelsPahami level DEBUG sampai CRITICAL: nilai numerik, mekanisme penyaringan pesan log, dan resolusi level efektif.
Buka → # Logging Formatters dan HandlersAtur output log dengan Formatter dan Handler: StreamHandler, FileHandler, level per handler, propagate, dan dictConfig.
Buka → # Structured LoggingKenapa teks polos gagal di skala besar dan cara menulis log JSON dengan field terstruktur serta correlation ID.
Buka → # Merancang ObservabilityRangkai log, metrics, dan trace menjadi observability utuh: apa yang dicatat, level produksi, dan checklist praktis.
Buka →Bab 25 Database dan SQL
Pahami tabel, baris, kolom, primary key, foreign key, dan tiga bentuk relasi sebagai fondasi bekerja dengan database.
Buka → # SQL Dasar untuk PythonTulis CREATE TABLE, INSERT, SELECT, UPDATE, DELETE, dan agregasi GROUP BY langsung dari Python lewat module sqlite3.
Buka → # SQLite dengan PythonGunakan module sqlite3 bawaan Python: buat file database, jalankan query, dan baca hasil dengan fetchone dan fetchall.
Buka → # Koneksi dan CursorPahami pembagian peran connection dan cursor, cara mengambil hasil bertahap, dan kebiasaan menutup koneksi dengan benar.
Buka → # Parameterized QueriesGunakan placeholder tanda tanya agar nilai terikat sebagai parameter, bukan dirangkai menjadi string SQL rawan injeksi.
Buka → # CRUD dengan SQLiteBangun program inventaris toko lengkap dengan operasi Create, Read, Update, dan Delete yang tersusun sebagai fungsi.
Buka → # TransactionsKelola commit dan rollback supaya rangkaian perubahan database berlaku sebagai satu kesatuan yang atomik.
Buka → # Database MigrationsKelola perubahan skema dengan berkas migrasi bernomor dan runner sederhana yang kita bangun dan jalankan sendiri.
Buka → # Connection ManagementRawat koneksi database dengan benar: tutup lewat context manager, atur timeout, dan kenali kapan pooling dibutuhkan.
Buka → # Pengenalan PostgreSQL dan MySQLKenali saat yang tepat beralih dari SQLite ke PostgreSQL atau MySQL beserta driver psycopg dan PyMySQL untuk keduanya.
Buka →Bab 26 Concurrency dan Parallelism
Bedakan concurrency dan parallelism, kenali beban I/O-bound versus CPU-bound, dan petakan tiga model eksekusi Python.
Buka → # ThreadingPelajari threading.Thread, start dan join, berbagi data antar thread, serta daemon thread.
Buka → # Locks dan SynchronizationPahami race condition secara nyata, lindungi data bersama dengan Lock dan RLock, serta hindari deadlock antar thread.
Buka → # MultiprocessingJalankan kode di process terpisah dengan multiprocessing.Process untuk memanfaatkan banyak core pada kerja CPU-bound.
Buka → # Process PoolsKelola banyak worker sekaligus dengan multiprocessing.Pool: map, apply_async, imap_unordered, dan disiplin close/join.
Buka → # concurrent.futuresKuasai ThreadPoolExecutor dan ProcessPoolExecutor: submit, Future, as_completed, map, dan timeout untuk kode modern.
Buka → # Queue dan Worker PatternsBangun pola producer-consumer yang aman dengan queue.Queue, task_done, join, dan pola shutdown menggunakan sentinel.
Buka → # Global Interpreter LockPahami Global Interpreter Lock: mengapa thread tidak mempercepat kerja CPU dan mengapa thread tetap membantu I/O.
Buka → # Memilih Threading atau MultiprocessingPutuskan antara threading dan multiprocessing dengan tabel keputusan, benchmark yang jujur, dan checklist praktis.
Buka →Bab 27 Asynchronous Programming
Pahami mengapa I/O yang memblokir itu mahal dan bagaimana async/await membuat satu thread menangani banyak tugas.
Buka → # Coroutine dan Event LoopBedah coroutine object, peran await sebagai penggerak eksekusi, dan event loop sebagai penjadwal tunggal asyncio.
Buka → # asyncioTur modul asyncio: sleep, gather, wait_for, asyncio.timeout, to_thread, dan Queue untuk program async yang tertata.
Buka → # Tasks dan Task GroupsJadwalkan coroutine bersamaan dengan create_task, kelola semuanya dengan TaskGroup, dan bandingkan dengan gather.
Buka → # Async Context ManagersKelola resource async dengan async with, protokol __aenter__/__aexit__, dan asyncio.Lock.
Buka → # Async Iterators dan GeneratorsKonsumsi data yang datang perlahan dengan __aiter__, async for, async generator, dan async comprehension.
Buka → # Cancellation dan TimeoutsBatalkan task dengan cancel(), tangani CancelledError, dan batasi operasi lambat dengan wait_for dan asyncio.timeout.
Buka → # Async Network I/OBangun server dan klien TCP async dengan start_server dan open_connection, plus konsep connection pooling.
Buka → # Memilih async atau ThreadingBandingkan async dan threading untuk beban I/O, pahami biaya masing-masing, lalu gabungkan keduanya dengan to_thread.
Buka →Bab 28 Networking dan HTTP
Pahami IP, port, DNS, TCP vs UDP, dan model klien-server sebagai fondasi sebelum menulis kode jaringan.
Buka → # Socket ProgrammingBangun server dan klien TCP echo nyata di localhost dengan module socket, termasuk konversi str ke bytes.
Buka → # HTTP Request dan ResponseBedah anatomi lengkap HTTP: method, status code, header, body, URL, dan cara mengintip percakapannya.
Buka → # Menggunakan urllibKirim HTTP request tanpa instalasi apa pun memakai urllib: urlopen, header, query string, dan HTTPError.
Buka → # Menggunakan HTTP ClientPakai requests dan httpx untuk GET, POST, JSON, session, hingga async client, lengkap dengan perbandingan keduanya.
Buka → # Bekerja dengan REST APIKonsumsi REST API dengan benar: prinsip resource dan stateless, operasi CRUD, serta autentikasi API key.
Buka → # JSON API ResponsesBaca respons JSON API dengan aman: navigasi struktur bersarang, .get() berantai, dan simpan ke file.
Buka → # Timeouts dan RetriesPasang timeout yang benar, tangani ReadTimeout secara nyata, dan tulis retry dengan exponential backoff.
Buka → # Pagination dan Rate LimitsMenjelajah semua halaman respons API dan menghormati batas kuota dengan header RateLimit serta Retry-After.
Buka → # Menangani Network ErrorsKenali hierarki exception requests dan httpx, tangkap error secara spesifik, catat kegagalan, dan putuskan retry.
Buka →Bab 29 Web Development
Pelajari siklus request-response, peran web framework, frontend vs backend, hingga konsep deployment.
Buka → # Pengenalan WSGI dan ASGIPahami standar WSGI dan ASGI yang menjembatani server web dengan framework Python seperti Flask dan FastAPI.
Buka → # Pengenalan FlaskBangun aplikasi web pertama dengan Flask: route, response, test client, mode debug, dan struktur proyek kecil.
Buka → # Routing dan Request HandlingKuasai routing Flask: route dinamis, converter, query string, form POST, body JSON, abort, redirect, dan url_for.
Buka → # Templates dan Static FilesPisahkan HTML dari Python dengan Jinja2: variabel, loop, kondisi, warisan template, static files, dan flash message.
Buka → # Forms dan ValidationTangani form HTML dengan Flask: alur GET-POST, validasi server-side dengan pola errors dict, dan token CSRF manual.
Buka → # Pengenalan DjangoKenalkan Django 6: startproject, startapp, pola MTV, view dan URLconf, hingga pengaturan penting settings.py.
Buka → # Models dan ORMUbah class Python menjadi tabel database dengan model Django: field, migrations, dan query lewat ORM.
Buka → # Pengenalan FastAPIBangun API modern dengan FastAPI: validasi otomatis dari type hints, response_model, dan dokumentasi Swagger.
Buka → # Dependency InjectionPahami dependency injection di FastAPI: Depends untuk parameter query, class dependency, dan override saat testing.
Buka → # Memilih Framework WebBandingkan Flask, Django, dan FastAPI secara objektif: tabel perbandingan, alur keputusan, dan faktor non-teknis.
Buka →Bab 30 API Development
Rancang REST API yang konsisten: penamaan resource, semantik method HTTP, idempotency, dan pemilihan status code.
Buka → # Membuat API dengan FastAPIBangun API manajemen tugas dengan FastAPI: path operations, path dan query parameter, serta pengujian TestClient.
Buka → # Request Models dan ValidationValidasi request body dengan Pydantic: field wajib, nilai default, Optional, dan constraint seperti min_length dan ge.
Buka → # Response ModelsKontrol bentuk response dengan response_model: filter field rahasia seperti password dan pisahkan model input-output.
Buka → # Status Codes dan Error ResponsesKirim status code yang tepat: 201 untuk POST, 204 untuk DELETE, serta error 404 dan 400 lewat HTTPException.
Buka → # Pagination, Filtering, dan SortingBangun endpoint daftar yang rapi: pagination, filtering, sorting sort=-field, dan metadata total serta has_next.
Buka → # Authentication dan AuthorizationAmankan API dengan API key header dan pahami konsep JWT, alur OAuth2, serta beda authentication dan authorization.
Buka → # OpenAPI dan API DocumentationPahami skema OpenAPI yang dibangkitkan FastAPI, akses Swagger UI dan ReDoc, lalu perkaya dengan tags dan examples.
Buka → # API TestingUji REST API dengan TestClient dan pytest: fixture, pola Arrange-Act-Assert, dependency_overrides, dan kasus tepi.
Buka → # Versioning dan Backward CompatibilityKelola evolusi API: versioning URL, header, atau query, perubahan additive aman, siklus deprecation, dan changelog.
Buka →Bab 31 Keamanan Python
Prinsip inti kode aman: least privilege, defense in depth, fail securely, input tak dipercaya, dan secure defaults.
Buka → # Validasi dan Sanitasi InputBedah perbedaan validasi dan sanitasi, allowlist vs blocklist, validasi upload, dan encoding output dengan html.escape.
Buka → # Mengelola SecretsKelola secrets dengan environment variables, file .env, gitignore yang disiplin, secret manager, dan rotasi berkala.
Buka → # Password HashingSimpan password dengan hash lambat ber-salt: pbkdf2_hmac, hmac.compare_digest, serta alasan md5 dan sha256 gagal.
Buka → # SQL InjectionDemo serangan SQL injection nyata beserta pertahanannya: parameterized query, ORM, least privilege, dan error hygiene.
Buka → # Path TraversalCegah path traversal dengan Path.resolve, pemeriksaan is_relative_to terhadap base directory, dan whitelist file.
Buka → # Deserialization RisksPahami risiko pickle dan yaml.load, gunakan json serta yaml.safe_load, dan tandatangani payload yang dipertukarkan.
Buka → # Dependency SecurityAmankan rantai pasok dependensi: waspadai typosquatting, pin versi, gunakan lockfile, dan audit dengan pip-audit.
Buka → # TLS dan HTTPSPahami TLS untuk enkripsi, identitas, dan integritas; verifikasi sertifikat dengan requests serta module ssl.
Buka → # Security TestingUji keamanan sebagai bagian test suite: autentikasi wajib, input hostile, fuzzing, dan pemindaian dependensi di CI.
Buka →Bab 32 Memory dan Performance
Pahami cara Python menyimpan object di heap, overhead tiap object, kerja pymalloc, dan siklus pembebasan memorinya.
Buka → # Reference Counting dan Garbage CollectionBedah reference counting, kegagalan siklus, garbage collector generasional, jebakan __del__, dan peran weakref.
Buka → # Profiling dengan cProfileTemukan hotspot program dengan cProfile dan pstats: baca kolom ncalls, tottime, dan cumtime dengan benar.
Buka → # BenchmarkingUkur kecepatan kode secara jujur dengan timeit, pilih perf_counter, dan baca derau hasil pengukuran.
Buka → # Time Complexity dan Big-OBaca notasi Big-O dari O(1) sampai O(n²) beserta tabel pertumbuhan dan bukti pengukuran nyata di Python.
Buka → # Optimasi AlgoritmaMenangkan performa lewat perbaikan algoritma: ganti O(n²) dengan O(n), pilih struktur data, dan prekomputasi.
Buka → # CachingHemat kerja berulang dengan functools.lru_cache: pahami cache_info, jebakan argument mutable, dan invalidasi.
Buka → # Generators untuk Memory EfficiencyProses data besar dengan memori kecil: list vs generator, baca file baris per baris, dan pipeline generator.
Buka → # Memahami Memory ProfilingLacak alokasi memori dengan tracemalloc, temukan kebocoran dengan compare_to, dan pahami kebocoran ala Python.
Buka → # Kapan Mengoptimalkan ProgramDisiplin sebelum optimasi: kutipan Knuth, aturan 90/10, tangga prioritas, dan kapan boleh berhenti.
Buka →Bab 33 Modern Python
Menetapkan nilai langsung di dalam ekspresi dengan := : pola loop dan comprehension, batas keterbacaan, dan SyntaxError.
Buka → # Positional-Only ParametersBedah lanjutan penanda / pada signature: anatomi lengkap, alasan desain, contoh stdlib, dan panduan mode parameter.
Buka → # Structural Pattern MatchingLevel lanjut match-case: sequence dan mapping pattern, class pattern __match_args__, OR dan AS pattern, jebakan capture.
Buka → # Union Types dan Modern AnnotationsEvolusi anotasi tipe: dari typing.Optional ke X | Y, isinstance dengan union, statement type PEP 695, dan praktik kini.
Buka → # Exception GroupsTangani banyak exception sekaligus dengan ExceptionGroup dan except* (3.11): traceback dan penyaringan per tipe.
Buka → # Task GroupsBedah lanjutan asyncio.TaskGroup (Python 3.11): pembatalan otomatis, ExceptionGroup, dan perbandingan dengan gather.
Buka → # tomllibBaca file TOML dari standard library (Python 3.11): load vs loads, tabel dan array, hingga pyproject.toml.
Buka → # Fitur f-string ModernBedah f-string Python 3.12 (PEP 701): kutip bersarang, backslash, performa terukur, dan kapan memakai string.Template.
Buka → # Menjaga Kompatibilitas VersiStrategi kode lintas versi Python: sys.version_info, fallback import, TYPE_CHECKING, __future__, dan drop versi lama.
Buka →Bab 34 CLI dan Automation
Bangun CLI pertama dengan argparse: argumen posisional, opsi, nilai default, exit code, dan subperintah.
Buka → # Command-Line OptionsKuasai opsi CLI lanjutan: tipe argumen, choices, flag, nargs, mutually exclusive group, dan desain bantuan --help.
Buka → # Environment VariablesBaca dan atur environment variables dengan os.environ, amankan secrets, dan terapkan urutan prioritas konfigurasi.
Buka → # Konfigurasi dengan TOML, JSON, dan YAMLMuat konfigurasi berlapis dari TOML, JSON, dan YAML, lalu gabungkan dengan fungsi merge dan environment variables.
Buka → # subprocessJalankan perintah eksternal dengan subprocess.run: tangkap output, tangani galat, timeout, dan pipe antar proses.
Buka → # Menjalankan Program EksternalResep praktik menjalankan program eksternal: parsing output JSON, streaming, DEVNULL, dan shutil.which.
Buka → # Scheduled JobsJalankan tugas terjadwal dengan time.sleep, cron, dan systemd timer, lalu rancang job yang idempoten dan mudah diawasi.
Buka → # Filesystem AutomationOtomatiskan pekerjaan berkas dengan pathlib: rename massal, pembersihan berdasarkan umur, laporan ukuran, dan dry-run.
Buka → # Membangun CLI ProfesionalGabungkan argparse, logging, konfigurasi, exit code, dan rich menjadi satu CLI utuh yang siap dipaketkan dan diuji.
Buka →Bab 35 Data Processing
Baca CSV dengan DictReader: konversi tipe eksplisit, baris rusak, delimiter, encoding, dan agregasi sederhana.
Buka → # Membaca Data JSONBaca JSON records, ndjson, nested flattening, validasi struktur, dan streaming dengan generator untuk file besar.
Buka → # Membaca Data ExcelBaca file Excel dengan openpyxl dan pandas: sheet, rentang sel, tipe data, serta konversi ke CSV dan JSON.
Buka → # Parsing Log FilesUbah baris log menjadi data terstruktur: parsing split vs regex, filtering level, hitung per jam, dan korelasi error.
Buka → # Membersihkan DataDeteksi dan tangani data kotor: nilai hilang, duplikat, whitespace, kapitalisasi, koersi tipe, dan outlier.
Buka → # Transformasi DataBentuk data siap analisis: field turunan, pengelompokan, agregasi, sorting, reshaping, dan join antar list.
Buka → # Menggabungkan DatasetGabungkan dataset: join berbasis kunci, concat, operasi himpunan, resolusi konflik, dan pemeriksaan integritas.
Buka → # Menangani Data BesarProses data melebihi memori: streaming, generator pipeline, chunk, dan memindahkan agregasi ke SQLite.
Buka → # Membangun Data PipelineRangkai extract-validate-clean-transform-aggregate-load menjadi pipeline yang bisa diulang, diuji, dan diamati.
Buka →Bab 36 Data Science dan Visualisasi
Kenali peta stack data Python: NumPy, pandas, matplotlib, seaborn, kapan stdlib cukup, dan alur kerja analisis data.
Buka → # Dasar NumPyKuasai array ndarray NumPy: dtype, shape, broadcasting, boolean mask, agregasi axis, dan kecepatan vectorization.
Buka → # Dasar PandasMulai analisis tabular dengan pandas: Series, DataFrame, read_csv, info, describe, dan alur kerja analisis.
Buka → # DataFrames dan SeriesBedah anatomi DataFrame: index, membangun tabel, loc vs iloc vs [], filter baris, dan jebakan chained indexing.
Buka → # Data Cleaning dengan PandasBersihkan data nyata dengan pandas: deteksi isna, dropna vs fillna, duplikat, str accessor, to_numeric, dan to_datetime.
Buka → # Analisis Data EksploratifJalankan EDA dengan pandas: interpretasi describe, groupby, crosstab, korelasi, top-N, dan visual cepat.
Buka → # Visualisasi dengan MatplotlibKuasai matplotlib: anatomi figure dan axes, API berorientasi objek, plot scatter bar hist, subplots, style, dan savefig.
Buka → # Visualisasi dengan SeabornGunakan seaborn: scatter dengan hue, relplot facet, histplot kde, boxplot, violinplot, dan heatmap korelasi.
Buka → # Mengekspor Hasil AnalisisKemas hasil analisis: to_csv, to_excel openpyxl, to_json, laporan metrik, ekspor grafik, dan reproducibility.
Buka →Bab 37 Machine Learning
Pahami cara machine learning belajar dari data, bedakan supervised, unsupervised, dan reinforcement learning.
Buka → # Menyiapkan DatasetSiapkan X, y, dan train/test split dengan benar sebelum melatih model machine learning pertama Anda.
Buka → # Feature EngineeringUbah fitur mentah menjadi input yang layak: scaling, one-hot encoding, fitur turunan, dan seleksi fitur.
Buka → # Supervised LearningLatih model k-NN, decision tree, logistic regression, dan random forest untuk classification dan regression.
Buka → # Unsupervised LearningTemukan pola tersembunyi tanpa label: k-means, evaluasi silhouette, dan reduksi dimensi dengan PCA.
Buka → # Training dan EvaluationUkur performa model dengan jujur: confusion matrix, precision, recall, cross-validation, dan GridSearchCV.
Buka → # Model PipelinesRangkai preprocessing dan model dalam satu Pipeline untuk mencegah data leakage dan menyederhanakan kode.
Buka → # Model SerializationSimpan dan muat model dengan pickle dan joblib, plus pola metadata sidecar untuk menghindari kejutan versi.
Buka → # Pengenalan Deployment ModelBawa model ke produksi lewat endpoint prediksi FastAPI, pahami latency, throughput, dan monitoring drift.
Buka →Bab 38 Packaging dan Deployment
Rancang struktur project Python: flat vs src layout, lokasi tests dan docs, konvensi penamaan, serta berkas esensial.
Buka → # Membuat pyproject.tomlBedah anatomi lengkap tabel [project]: metadata, dependencies, optional-dependencies, hingga jebakan sintaks TOML.
Buka → # Build System dan Package MetadataPahami tabel [build-system], peran PEP 517, backend alternatif, dan ke mana metadata pyproject.toml berakhir.
Buka → # Membangun Wheel dan sdistJalankan python -m build pada package nyata, bedah isi wheel dan sdist, lalu periksa artefak sebelum distribusi.
Buka → # Membuat Command-Line Entry PointsUbah package menjadi perintah terminal sungguhan lewat [project.scripts], lalu lihat wrapper yang dibuatkan pip.
Buka → # Mengemas AplikasiBedakan aplikasi dari library, kemas aplikasi sebagai satu file dengan zipapp, dan pisahkan data dari secret.
Buka → # Containerization dengan DockerBangun image Docker untuk aplikasi Python: Dockerfile berlapis, layer caching, user non-root, dan docker compose.
Buka → # Environment ConfigurationTerapkan prinsip 12-factor: konfigurasi di environment, bukan di kode, tervalidasi sejak startup.
Buka → # Deployment Aplikasi WebSusun anatomi deployment dari uvicorn sampai reverse proxy, pilih platform, dan pahami zero-downtime.
Buka → # Monitoring AplikasiPantau uptime, latency, dan error rate dengan health check, log terstruktur, error tracking, serta metrik Prometheus.
Buka →Bab 39 Dokumentasi dan Maintainability
Kuasai gaya docstring Google, NumPy, dan reST lengkap dengan Args, Returns, Raises, serta doctest teruji.
Buka → # Dokumentasi dengan SphinxBangun dokumentasi HTML profesional dari docstring dengan Sphinx: autodoc, napoleon, intersphinx, dan proses build.
Buka → # Dokumentasi dengan MkDocsSusun dokumentasi proyek modern berbasis Markdown dengan MkDocs: struktur nav, tema Material, mkdocstrings, dan deploy.
Buka → # Type Hints untuk MaintainabilityGunakan type hints dan mypy sebagai kontrak yang menjaga refactor tetap aman saat kode berkembang dari waktu ke waktu.
Buka → # RefactoringUbah struktur kode tanpa mengubah perilaku: ekstrak fungsi, konstanta, dict dispatch, dan guard clause.
Buka → # Code ReviewJalankan review yang membangun: checklist kualitas, etika umpan balik, pemeriksaan otomatis, dan disiplin PR kecil.
Buka → # Design PrinciplesTerapkan SOLID, composition over inheritance, DRY, KISS, serta kohesi dan kopling agar kode mudah dikembangkan.
Buka → # Menjaga Backward CompatibilityJaga API tetap ramah bagi pengguna lama: proses deprecasi, semver, changelog, dan teknik kompatibilitas tanpa patah.
Buka →Bab 40 Proyek Python
Bangun kalkulator terminal dengan operasi aritmatika, validasi input, penanganan error, dan test yang lengkap.
Lihat proyek → # Proyek: Pengelola Daftar TugasBangun aplikasi manajemen tugas berbasis terminal dengan penyimpanan file dan test yang terstruktur.
Lihat proyek → # Proyek: Pengolah File CSVBangun alat pengolah CSV yang membaca, memvalidasi, meringkas, dan menulis hasil olahan beserta test-nya.
Lihat proyek → # Proyek: Aplikasi Inventaris SQLiteBangun aplikasi inventaris dengan database SQLite: skema, CRUD, transaksi, pencarian, laporan, dan testing.
Lihat proyek → # Proyek: CLI Pengelola FileBangun CLI pengelola file dengan argparse, operasi file, konfigurasi, error handling, dan distribusi package.
Lihat proyek → # Proyek: REST API Manajemen TugasBangun REST API manajemen tugas dengan FastAPI: request/response, database, validasi, testing, dan deployment.
Lihat proyek → # Proyek: Paket Python SederhanaBangun dan distribusikan package Python sederhana: struktur, implementasi, testing, hingga build dan publish.
Lihat proyek →