πŸ‘‹ Kata Sambutan

Selamat datang di Learn Python, Zig & Bug Hunter.

Di sini lo gak cuma diajarin β€œcara pakai”, tapi cara kerja di baliknya.
Bukan sekadar nulis kode, tapi ngerti kenapa kode itu jalan β€” dan kapan dia gagal.

Fokus kita simpel:

  • Bangun skill nyata
  • Latih logika & analisis
  • Bentuk mindset engineer & hunter

Lo akan ketemu:

  • Python untuk automation & tooling
  • Zig untuk kontrol penuh & performa
  • Bug Hunting untuk ngerti celah, bukan sekadar eksploit

Gak ada jalan instan di sini.
Yang ada: belajar, gagal, paham, ulang.

Kalau lo serius naik level β€” lanjut.
Kalau cuma mau coba-coba β€” bakal ketinggalan.

β€œNgoding itu mudah.
Ngerti sistem? Itu yang bikin lo beda.”

πŸš€ Mulai Sekarang


⚠️ Rules

  • Edukasi only
  • No illegal activity
  • Fokus: skill + mindset

Dokumentasi Python Gh0sT4n


Setup Python di Neovim (NvChad)

Panduan ini menjelaskan cara setup environment Python di Neovim menggunakan NvChad.

1. Requirements

Pastikan semua dependency berikut sudah terinstall:

Core

  • Neovim
  • Python (disarankan β‰₯ 3.10)
  • Alacritty (opsional, tapi recommended)

Tools Pendukung

  • Nerd Font β†’ FiraCode Nerd Font
  • Tree-Sitter CLI
  • ripgrep (search super cepat di Neovim)

Python Package Manager (Opsional tapi Disarankan)

Gunakan UV (lebih cepat dari pip):

Install via curl:

curl -LsSf https://astral.sh/uv/install.sh | sh

Install via wget:

wget -qO- https://astral.sh/uv/install.sh | sh

2. Setup NvChad

Jika belum terinstall:

git clone https://github.com/NvChad/starter ~/.config/nvim && nvim

3. Setup LSP (Python)

Install Pyright

Di dalam Neovim:

:MasonInstall ty

Konfigurasi LSP

Edit:

~/.config/nvim/lua/config/lspconfig.lua
local servers = { "ty" }

4. Setup Tree-Sitter

Install parser Python:

:TSInstall python

5. Python Tools (Formatter, Linter, Debugger)

Install menggunakan pip atau uv:

pip install black ruff mypy debugpy

atau:

uv pip install black ruff mypy debugpy

Fungsi Tools

  • black β†’ formatter kode
  • ruff β†’ linter cepat
  • mypy β†’ type checker
  • debugpy β†’ debugging

6. Update Environment

:Lazy sync
:MasonUpdate

7. Troubleshooting

LSP tidak jalan

:LspInfo

Jika tidak muncul:

  • Pastikan pyright terinstall
  • Pastikan NodeJS aktif

Tree-sitter error

:TSUpdate

NvChad bermasalah

rm -rf ~/.local/share/nvim
rm -rf ~/.cache/nvim
nvim

Dotfiles NvChad By Gh0sT4n

Gh0sT4n IDE - NvChad


Ringkasan Silabus/Roadmap

Fase 01 β€” Dasar (2–3 Bulan)

9 konsep kunci:

  1. Tipe data
  2. Struktur data built-in
  3. Control flow
  4. Functions & scope
  5. String manipulation
  6. File I/O
  7. Error handling
  8. List comprehension
  9. Modules & packages.

Library: os, sys, math, datetime, json, csv, re

Proyek: Linux Log Analyzer β€” Detektif Syslog CLI. Parse /var/log/auth.log, syslog, kern.log.Deteksi brute-force SSH, kernel panic, OOM killer dari pola log. Output JSON report. Ini konteks nyata yang sering dipakai sysadmin & security engineer.

Fase 02 β€” Menengah (3–4 Bulan)

9 konsep kunci:

  1. OOP Fundamentals
  2. 4 Pilar OOP
  3. Magic Methods/Dunder
  4. Properties & Descriptors
  5. Functional Programming
  6. Iterators & Generators
  7. Decorators
  8. Context Managers
  9. Type Hints.

Library: functools, itertools, collections, dataclasses, typing, abc

Proyek: BugHound β€” OOP Process & Memory Bug Tracker. Monitor proses Linux dengan class hierarchy yang proper (ProcessMonitor, MemoryMonitor, FDMonitor). Pakai @alert decorator untuk threshold, generator untuk lazy log history. Ditenagai psutil yang baca langsung dari kernel.

Fase 03 β€” Sepuh (4–6 Bulan)

9 konsep kunci:

  1. Async Programming
  2. Concurrency vs Parallelism
  3. Metaprogramming
  4. Descriptors Protocol
  5. Memory Management
  6. Python Data Model
  7. Performance Optimization
  8. C Extensions
  9. Advanced Patterns.

Library: asyncio, aiohttp, uvloop, multiprocessing, cProfile, Numba/Cython

Proyek: GhostScan β€” Async Vulnerability & Bug Hunter Engine Async port scanner + CVE checker + /proc filesystem parser + syscall anomaly detector. Plugin system via metaclass β€” nambah checker baru cukup bikin 1 class, auto-register. Sekelas tools seperti lynis atau nmap-script.


Total estimasi: ~9–13 bulan kalau konsisten. Ingat β€” kecepatan bukan tujuan, pemahaman yang solid adalah kuncinya.


Pengenalan

Python dikembangkan oleh Guido Van Rossum, Programmer asal Belanda. Python menggunakan pemograman C sebagai basisnya.

Python adalah Bahasa pemograman multiparadigma, yaitu mendukung berorientasi objek, pemograman terstruktur dan pemograman fungsional

Kelebihan Python :

  • Mudah Dipelajari
  • Mudah Digunakan
  • Mendukung IoT(Internet Od Things)
  • Multiplatform

Hello World

Hello World merupkan program yang populer untuk sesorang yang baru memulai belajar.

Langkah Membuat Hello World Python
  1. Buat File dengan ekstensi .py. contoh : hello.py
  2. Tulis Kode Hello World :
    print("Hello World")
    
    • print() ─> Fungsi untuk menampilkan teks ke layar
    • ' ' atau " " ─> Fungsi penugasan python untuk teks
  3. Simpan File.
  4. Jalankan Di Terminal :
    python hello.py
    

Code

# Hello world
print("hello world")

# Hello World adalah program yang terkenal python untuk pemula

Data Type

Data Type adalah Klasifikasi nilai yang disimpan dalam variabel, mencakup tipe dasar(integer, float, string, boolean) hingga koleksi data (list, tuple, dictionary, set, frozenset).

Data Type :

  1. Data Type Text

    • String(str) Data Type berupa karakter string yang diapit tanda petik("" atau ''). Contoh :

      Lang = "Python"
      Lang1 ='Zig'
      
  2. Data Type Numerik

    • Integer(int) : Data Type berupa Bilangan Bulat, Positif atau Negatif dan Bilangan Non-Desimal, Contoh :

      angka = 10
      angka1 = -5
      angka2 = 0
      
    • Float(float) : Data Type berupa Bilangan Pecahan atau Desimal. Contoh :

      Fl = 3.14
      Fl1 = -0.5
      Fl2 = 2.0
      
    • Complex(complex) : Data Type berupa Bilangan Kompleks dengan bagian real dan imajiner. Contoh :

      Com = 1 +
      Com1 = 5j
      
  3. Data Type Boolean

    • Boolean(bool) : Nilai Pernyataan Benar atau Salah. Contoh :

      Bl = True
      Bl1 = False
      
  4. Data Type Sekuensial(Sequence)

    • List : Data Type berupa Koleksi yang Memiliki Value dalam Satu variabel, Dapat Diubah(Mutable) & Mengizinkan Duplikat. Contoh :

      huruf = ['a', 'b']
      angka = [1, 2]
      
    • Tuple : Data Type Tuple adalah Tipe Data Koleksi yang Memiliki Value dalam Satu variabel. Perbedaan di antara keduanya adalah:

      • Data Type Tuple jika diberi Value, Maka Data Type tersebut tidak dapat diubah kembali.
      • Data Type Tuple menggunakan Tutup Kurung Biasa ().
      • Contoh :
      nama = ('Woody', 'gh0st4n')
      umur = (17, 18)
      
    • Set : Data Type Set adalah Kumpulan Data Type yang Elemennya Dapat Diubah, Tidak Terurut, dan Bersifat Unik. Sesuai dengan namanya, Data Type set memiliki operasi matematika himpunan seperti Gabungan, Irisan, Selisih, dan Lain-lain. Set menggunakan kurung kurawal {}. Contoh :

      nama = {'Gh0sT4n', 'arfy slowly'}
      angka = {18, 19}
      
    • Frozenset : Data Type Frozenset adalah Kumpulan Data Type yang mirip dengan set, yang membedakannya dengan set adalah Elemen pada frozenset tidak dapat dirubah setelah frozenset dibuat. Contoh :

      nama = frozenset(['Gh0st4n', 'Miftah'])
      umur = frozenset([17, 18])
      
  5. Data Type Mapping

    • Dictionary(dict) : Data Type Array dengan Kunci-Nilai (Key-Value) yang Tidak Berurutan namun Dapat Diubah dan Bisa Berupa String atau Angka. Contoh :

      test1 = {"nama": "Andi", "usia": 25}
      hari = {
          "sen": "senin",
          "sel": "selasa",
          "rab": "rabu"
      }
      
  6. Data Type Binary

    • Bytes : Merupakan sebuah object tipe data yang berisikan array tunggal. Contoh :

      angka = bytes(17)
      
    • Bytearray : Merupakan seubah object tipe data yang berisikan array byte tunggal yang tidak dapat dirubah. Contoh :

      angka = bytearray(18)
      
    • Memoryview : Memoryview adalah cara aman untuk mengekspos protokol buffer dengan python. Ini memungkinkan untuk mengakses buffer internal suatu objek dengan membuat objek tampilan. Memoryview mengambalikan fungsi tampilan memori daripada objek yang diberikan. Contoh :

      angka = memoryview(bytes(18))
      

Code

# Data Type
## String
nama = "Gh0sT4n"
nama_pr:str = "Miftah"
print("=== String Data Type ===")
print(f"Nama : {nama}, Data Type : {type(nama)}")
print(f"Nama : {nama_pr}, Data Type : {type(nama_pr)}")

## Numeric
integer = 17
integer2:int = 18
Fl = 3.14
fl:float = 160.3
Com = 1j
com:complex = 5j
cOm = complex(3j)

print("\n=== Numeric Data Type ===")
print(f"Integer : {integer}, Data Type : {type(integer)}")
print(f"Integer : {integer2}, Data Type : {type(integer2)}")
print(f"Float : {Fl}, Data Type : {type(Fl)}")
print(f"Float : {fl}, Data Type : {type(fl)}")
print(f"Complex : {Com}, Data Type : {type(Com)}")
print(f"Complex : {cOm}, Data Type : {type(cOm)}")
print(f"Complex : {com}, Data Type : {type(com)}")

## Boolean
Bool1 = True
Bool2 = False
Bool3:bool = True
Bool4:bool = False

print("\n=== Boolean Data Type ===")
print(f"Boolean : {Bool1}, Data Type : {type(Bool1)}")
print(f"Boolean : {Bool2}, Data Type : {type(Bool2)}")
print(f"Boolean : {Bool3}, Data Type : {type(Bool3)}")
print(f"Boolean : {Bool4}, Data Type : {type(Bool4)}")

## List
"""
Perhitungan List Menggunakan index array[0, 1, 2, ..]
"""
nama = ['T4n OS', 'Gh0sT4n']
umur = [20, 30]

print("\n=== List Data Type ===")
print(nama)
print(umur)
print(f"Nama : {nama[1]}, Data Type : {type(nama)}")
print(f"Umur : {umur[0]}, Data Type : {type(umur)}")

## Tuple
"""
Perhitungan Tuple Menggunakan index array[0, 1, 2, ..]
"""
Tp = ('T4n OS', 'Gh0sT4n')
tp = (20, 30)

print("\n=== List Data Type ===")
print(Tp)
print(tp)
print(f"Tuple1 : {Tp[1]}, Data Type : {type(Tp)}")
print(f"Tuple2 : {tp[0]}, Data Type : {type(tp)}")

## Set
SS = {'Gh0sT4n', 'arfy slowly'}
Ss:set = {18, 19}

print("\n=== Set Data Type ===")
print(SS)
print(Ss)
print(f"SS1 : {SS}, Data Type : {type(SS)}")
print(f"Ss2 : {Ss}, Data Type : {type(Ss)}")

## Frozenset
FS = {'Gh0sT4n', 'arfy slowly'}
fs:frozenset = {18, 19}

print("\n=== FrozenSet Data Type ===")
print(FS)
print(fs)
print(f"FS : {FS}, Data Type : {type(FS)}")
print(f"fs : {fs}, Data Type : {type(fs)}")

## Dictionary
test1 = {"nama": "Andi", "usia": 25}
hari = {
    "sen": "senin",
    "sel": "selasa",
    "rab": "rabu"
}

bulan:dict = {
    "jan": "january",
    "feb": "februari",
    "mar": "maret"
}

print("\n=== FrozenSet Data Type ===")
print(test1)
print(hari)
print(bulan)
print()
print(f"test1 : {test1}, Data Type : {type(test1)}")
print(f"hari  : {hari},  Data Type : {type(hari)}")
print(f"bulan : {bulan}, Data Type : {type(bulan)}")
print()
print(f"test1 : {test1["nama"]}, Data Type : {type(test1["nama"])}")
print(f"hari  : {hari["sel"]},   Data Type : {type(hari["sel"])}")
print(f"bulan : {bulan["mar"]},  Data Type : {type(bulan["mar"])}")

## Binary
By = bytes(17)
#By1:bytes = 17 # int
Bya = bytearray(18)
ByA:bytearray = 18 #> int
# Mv = memoryview(18) # TypeError: memoryview: a bytes-like object is required, not 'int'
Mv1:memoryview = 18
Mvw = memoryview(bytes(18))
Mvw1:memoryview = bytes(18)

print("\n=== Binary Data Type ===")
print(f"Bytes : {By}, Data Type : {type(By)}")
#print(f"Bytes : {By1}, Data Type : {type(By1)}") # int
print(f"Bytesarray {Bya}, Data Type : {type(Bya)}")
#print(f"Bytesarray {ByA}, Data Type : {type(ByA)}") # int
#print(Mv)
print(f"Memoryview : {Mv1}, Data Type : {type(Mvw1)}") # Bytes
print(f"Memoryview : {Mvw}, Data Type : {type(Mvw)}") # Memoryview
print(f"Memoryview : {Mvw1}, Data Type : {type(Mvw1)}") # Bytes

Variabel & variabel String pada Python

Variabel

Variabel adalah nama (identifier) yang mereferensikan sebuah nilai (value) di memori.

Python adalah bahasa dynamically typed, jadi kamu tidak perlu mendeklarasikan tipe data secara eksplisit.

nama = "Tan"
umur = 17
tinggi = 170.5

Aturan Penamaan Variabel

Python punya aturan ketat + konvensi (PEP8).

1. Tidak boleh diawali angka

# Benar
nama = "bob"

# Salah
1nama = "bob"

2. Gunakan underscore untuk pemisah

# Benar
angka_saya = 12

# Salah
angkaSaya = 12  # masih valid, tapi tidak sesuai PEP8

3. Case-sensitive (huruf besar/kecil beda)

Nama = "james"
nama = "joko"

print(Nama)  # james
print(nama)  # joko

4. Konvensi (WAJIB kalau mau kode rapi)

Gunakan:

snake_case

Contoh:

nama_lengkap = "Tan Dev"
total_harga = 15000

Keyword (Reserved Words)

Keyword adalah kata bawaan Python yang tidak boleh dipakai sebagai nama variabel.

Contoh keyword:

- False
- None
- True
- and
- as
- assert
- break
- class
- continue
- def
- del
- elif
- else
- except
- finally
- for
- from
- global
- if
- import
- in
- is
- lambda
- nonlocal
- not
- or
- pass
- raise
- try
- return
- while
- with
- yield

Contoh salah:

# ERROR
if = 10

Assign & Reassign Variabel

Variabel bisa diubah kapan saja.

x = 10
x = 20

print(x)  # 20

Multiple Assignment

a, b, c = 1, 2, 3
print(a, b, c)

Swap tanpa variabel tambahan:

a, b = b, a

Variabel String

Variabel String adalah Variabel dengan nilai tipe data untuk menyimpan teks.

Membuat String

nama = "Tan"
nama2 = 'Tan'

Keduanya sama.

Multiline String

teks = """Ini adalah
string panjang
multi baris"""

Akses Karakter (Indexing)

nama = "Python"

print(nama[0])  # P
print(nama[1])  # y

Index negatif:

print(nama[-1])  # n

Slicing

nama = "Python"

print(nama[0:3])  # Pyt
print(nama[2:])   # thon
print(nama[:4])   # Pyth

String Immutable

String tidak bisa diubah langsung.

nama = "Tan"

# ERROR
nama[0] = "B"

Solusi:

nama = "B" + nama[1:]

Operasi String

Gabung (Concatenation)

a = "Hello"
b = "World"

print(a + " " + b)

Pengulangan

print("Hi " * 3)

Built-in Function & Method

teks = "python"

print(len(teks))        # panjang string
print(teks.upper())    # PYTHON
print(teks.lower())    # python
print(teks.capitalize())  # Python

Format String (WAJIB PAHAM)

nama = "Tan"
umur = 17

print(f"Nama: {nama}, Umur: {umur}")

2. format()

print("Nama: {}, Umur: {}".format(nama, umur))

Escape Character

print("Hello\nWorld")   # newline
print("Hello\tWorld")   # tab
print("He said \"Hi\"")

Cek String

teks = "python123"

print(teks.isalpha())   # False
print(teks.isdigit())   # False
print(teks.isalnum())   # True

Ringkasan (No BS)

  • Variabel = label ke value
  • Python = dynamic typing
  • Gunakan snake_case
  • String = immutable
  • Indexing & slicing = basic wajib
  • f-string = standar modern

Source Code


Operator Python

Operator digunakan untuk melakukan operasi pada variabel atau nilai (value) untuk memanipulasi data. Contoh sederhana:

2 + 3

Daftar ISI

Jenis Operator

Operator Aritmatika

Digunakan untuk operasi matematika dasar.

OperatorDeskripsiContoh
+Penjumlahan2 + 3 = 5
-Pengurangan5 - 2 = 3
*Perkalian2 * 3 = 6
/Pembagian6 / 2 = 3.0
//Pembagian bulat7 // 2 = 3
%Modulus7 % 2 = 1
**Pangkat2 ** 3 = 8

Contoh Penggunaan :

  1. Contoh Kode :
    #Operator
    
    angkaP = 10
    angkaK = 12
    
    ## Operator Arimatika
    ### Penambahan
    pn = angkaP + angkaK
    ### Pengurangan
    pg = angkaP - angkaK
    ### Perkalian
    pr = angkaP * angkaK
    ### Pembagian
    pb = angkaP / angkaK
    ### Perpangkatan
    pp = angkaP ** angkaK
    ### Modulus
    md = angkaP % angkaK
    ### Floor atau Sisa Bagi
    sb = angkaP // angkaK
    
    print(f"Nilai Pertama : {angkaP}")
    print(f"Nilai Kedua : {angkaK}")
    print(f"Operator Penambahan = {pn}")
    print(f"Operator Pengurangan = {pg}")
    print(f"Operator Perkalian = {pr}")
    print(f"Operator Pembagian = {pb}")
    print(f"Operator Perpangkatan = {pp}")
    print(f"Operator Modulus = {md}")
    print(f"Operator Sisa Bagi = {sb}")
    

Operator Penugasan

Digunakan untuk memberikan nilai ke variabel.

OperatorContohDeskripsi
=x = 5Assign nilai
+=x += 3x = x + 3
-=x -= 3x = x - 3
*=x *= 3x = x * 3
/=x /= 3x = x / 3
//=x //= 3x = x // 3
%=x %= 3x = x % 3
**=x **= 3x = x ** 3

Contoh Penggunaan :

  1. Contoh Kode :
    # OPERATOR PENUGASAN PYTHON
    
    print("=== Penugasan Dasar ===")
    x = 10
    print("x =", x)
    print()
    
    
    print("=== Penugasan dengan Operasi ===")
    
    x = 5
    x += 3
    print("x += 3 ->", x)  # 8
    
    x = 5
    x -= 2
    print("x -= 2 ->", x)  # 3
    
    x = 4
    x *= 3
    print("x *= 3 ->", x)  # 12
    
    x = 10
    x /= 2
    print("x /= 2 ->", x)  # 5.0
    
    x = 7
    x //= 2
    print("x //= 2 ->", x)  # 3
    
    x = 7
    x %= 3
    print("x %= 3 ->", x)  # 1
    
    x = 2
    x **= 3
    print("x **= 3 ->", x)  # 8
    
    print("=== Contoh Real Use ===")
    
    # Counter
    count = 0
    count += 1
    count += 1
    print("Counter:", count)  # 2
    
    # Akumulasi
    total = 0
    total += 100
    total += 250
    total -= 50
    print("Total:", total)  # 300
    
    # # Loop
    # x = 1
    # for _ in range(5):
    #     x *= 2
    # print("Loop x:", x)  # 32
    
    print()
    
    
    print("=== Behavior pada Mutable Object ===")
    
    a = [1, 2]
    b = a
    
    a += [3]
    
    print("a:", a)  # [1, 2, 3]
    print("b:", b)  # ikut berubah (referensi sama)
    

Operator Perbandingan

Digunakan untuk membandingkan dua nilai (hasilnya boolean).

OperatorDeskripsiContoh
==Sama dengan2 == 2 β†’ True
!=Tidak sama2 != 3 β†’ True
>Lebih besar3 > 2 β†’ True
<Lebih kecil2 < 3 β†’ True
>=Lebih besar/sama3 >= 3 β†’ True
<=Lebih kecil/sama2 <= 3 β†’ True

Contoh Penggunaan :

  1. Contoh Kode :
    # OPERATOR PERBANDINGAN
    
    print("=== Operator Perbandingan ===")
    
    a = 5
    b = 3
    
    print("a =", a)
    print("b =", b)
    print()
    
    # Sama dengan
    print("a == b ->", a == b)  # False
    
    # Tidak sama
    print("a != b ->", a != b)  # True
    
    # Lebih besar
    print("a > b  ->", a > b)   # True
    
    # Lebih kecil
    print("a < b  ->", a < b)   # False
    
    # Lebih besar atau sama
    print("a >= b ->", a >= b)  # True
    
    # Lebih kecil atau sama
    print("a <= b ->", a <= b)  # False
    
    print()
    
    
    print("=== Contoh Real Use ===")
    
    nilai = 75
    
    # Cek lulus
    print("Lulus? ->", nilai >= 70)
    
    # Cek nilai perfect
    print("Nilai sempurna? ->", nilai == 100)
    
    # Range check
    print("Nilai di antara 60-80? ->", 60 <= nilai <= 80)
    
    print()
    
    
    print("=== Perbandingan String ===")
    
    x = "apple"
    y = "banana"
    
    print("x == y ->", x == y)  # False
    print("x < y  ->", x < y)   # True (berdasarkan alfabet)
    
    print()
    
    
    print("=== Perbandingan List ===")
    
    a = [1, 2]
    b = [1, 2]
    c = [1, 2, 3]
    
    print("a == b ->", a == b)  # True (isi sama)
    print("a == c ->", a == c)  # False
    
    print()
    
    
    print("=== Catatan Penting ===")
    
    # == membandingkan VALUE
    # is membandingkan OBJECT (alamat memory)
    
    a = [1, 2]
    b = [1, 2]
    
    print("a == b ->", a == b)  # True
    print("a is b ->", a is b)  # False (objek berbeda)
    

Operator Logika

Digunakan untuk operasi boolean.

OperatorDeskripsiContoh
andDANTrue and False β†’ False
orATAUTrue or False β†’ True
notNegasinot True β†’ False

Contoh Penggunaan :

  1. Contoh Kode :
    # OPERATOR LOGIKA
    
    print("=== Operator Logika ===")
    
    a = True
    b = False
    
    print("a =", a)
    print("b =", b)
    print()
    
    # AND
    print("a and b ->", a and b)  # False
    
    # OR
    print("a or b  ->", a or b)   # True
    
    # NOT
    print("not a   ->", not a)    # False
    print("not b   ->", not b)    # True
    
    print()
    
    
    print("=== Contoh dengan Perbandingan ===")
    
    x = 10
    
    print("x > 5 and x < 20 ->", x > 5 and x < 20)  # True
    print("x < 5 or x > 8  ->", x < 5 or x > 8)     # True
    print("not (x > 5)     ->", not (x > 5))        # False
    
    print()
    
    
    print("=== Contoh Real Use ===")
    
    umur = 18
    punya_ktp = True
    
    # Syarat boleh daftar
    print("Boleh daftar? ->", umur >= 17 and punya_ktp)
    
    # Syarat diskon
    member = False
    print("Dapat diskon? ->", umur < 12 or member)
    
    print()
    
    
    print("=== Behavior Penting (Short-Circuit) ===")
    
    # AND: berhenti kalau sudah False
    print(False and print("Ini tidak akan muncul"))
    
    # OR: berhenti kalau sudah True
    print(True or print("Ini juga tidak akan muncul"))
    
    print()
    
    
    print("=== Truthy & Falsy ===")
    
    print("bool(0)     ->", bool(0))     # False
    print("bool(1)     ->", bool(1))     # True
    print("bool('')    ->", bool(''))    # False
    print("bool('isi') ->", bool('isi')) # True
    print("bool([])    ->", bool([]))    # False
    print("bool([1])   ->", bool([1]))   # True
    
    print()
    
    
    print("=== Trick Python (Return Value) ===")
    
    # Python tidak selalu return True/False
    print("0 and 5  ->", 0 and 5)   # 0
    print("5 and 10 ->", 5 and 10)  # 10
    
    print("0 or 5   ->", 0 or 5)    # 5
    print("5 or 10  ->", 5 or 10)   # 5
    

Operator Identitas

Digunakan untuk membandingkan apakah dua variabel merujuk ke objek yang sama di memori.

OperatorDeskripsiContoh
isSama objeka is b
is notTidak sama objeka is not b

Contoh Penggunaan :

  1. Contoh Kode :
    # OPERATOR IDENTITAS
    
    print("=== Operator Identitas ===")
    
    a = [1, 2]
    b = [1, 2]
    c = a
    
    print("a:", a)
    print("b:", b)
    print("c:", c)
    print()
    
    # Bandingkan VALUE
    print("a == b ->", a == b)  # True (isi sama)
    
    # Bandingkan OBJECT (memory)
    print("a is b ->", a is b)  # False (objek berbeda)
    print("a is c ->", a is c)  # True (referensi sama)
    
    print()
    
    
    print("=== is not ===")
    
    print("a is not b ->", a is not b)  # True
    print("a is not c ->", a is not c)  # False
    
    print()
    
    
    print("=== Contoh dengan None ===")
    
    x = None
    
    print("x is None ->", x is None)       # True
    print("x == None ->", x == None)      # True (tapi tidak direkomendasikan)
    
    # Best practice:
    if x is None:
        print("x kosong (None)")
    
    print()
    
    
    print("=== Contoh Mutable Object ===")
    
    a = [1, 2]
    b = a
    
    a.append(3)
    
    print("a:", a)  # [1, 2, 3]
    print("b:", b)  # ikut berubah (karena referensi sama)
    print("a is b ->", a is b)  # True
    
    print()
    
    
    print("=== Contoh Immutable Object ===")
    
    x = 10
    y = 10
    
    print("x == y ->", x == y)  # True
    print("x is y ->", x is y)  # Bisa True (Python cache integer kecil)
    
    print()
    
    
    print("=== Hati-hati dengan is ===")
    
    x = 1000
    y = 1000
    
    print("x == y ->", x == y)  # True
    print("x is y ->", x is y)  # Bisa False (objek beda)
    

Operator Bitwise

Digunakan untuk operasi pada level bit (binary).

OperatorDeskripsiContoh
&AND5 & 3 = 1
``OR`53 = 7`
^XOR5 ^ 3 = 6
~NOT~5 = -6
<<Shift kiri5 << 1 = 10
>>Shift kanan5 >> 1 = 2

Contoh Penggunaan :

  1. Contoh Kode :
    # =========================
    # OPERATOR BITWISE
    # =========================
    
    print("=== Operator Bitwise ===")
    
    a = 5   # 0101 (binary)
    b = 3   # 0011 (binary)
    
    print("a =", a, "->", bin(a))
    print("b =", b, "->", bin(b))
    print()
    
    # AND (&)
    print("a & b  ->", a & b,  "->", bin(a & b))   # 0001 = 1
    
    # OR (|)
    print("a | b  ->", a | b,  "->", bin(a | b))   # 0111 = 7
    
    # XOR (^)
    print("a ^ b  ->", a ^ b,  "->", bin(a ^ b))   # 0110 = 6
    
    # NOT (~)
    print("~a     ->", ~a,     "->", bin(~a))      # -6 (two's complement)
    
    print()
    
    
    print("=== Shift Operator ===")
    
    x = 5  # 0101
    
    # Shift kiri (<<)
    print("x << 1 ->", x << 1, "->", bin(x << 1))  # 1010 = 10
    
    # Shift kanan (>>)
    print("x >> 1 ->", x >> 1, "->", bin(x >> 1))  # 0010 = 2
    
    print()
    
    
    print("=== Contoh Real Use ===")
    
    # Cek apakah angka genap (bit terakhir = 0)
    n = 4
    print("Genap? ->", (n & 1) == 0)
    
    # Set bit (nyalakan bit tertentu)
    flags = 0
    flags |= 1   # set bit ke-1
    flags |= 2   # set bit ke-2
    print("flags ->", flags, bin(flags))
    
    # Cek bit
    print("bit 1 aktif? ->", (flags & 1) != 0)
    print("bit 2 aktif? ->", (flags & 2) != 0)
    
    # Toggle bit
    flags ^= 1
    print("toggle bit 1 ->", flags, bin(flags))
    
    # Hapus bit
    flags &= ~2
    print("hapus bit 2 ->", flags, bin(flags))
    
    print()
    
    
    print("=== Catatan Penting ===")
    
    # Bitwise hanya untuk integer
    # Python pakai two's complement untuk bilangan negatif
    
    print("bin(-1) ->", bin(-1))
    print("~0      ->", ~0)  # -1
    

Operator Arimatika

Operator Penugasan

Operator Perbandingan

Operator Logika

Operator Identitas

Operator Bitwise

Dokumentasi Zig Gh0sT4n



Dokumentasi Bug Hunter Gh0sT4n