π 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
- π Python
- π Zig
- π Bug Hunter
β οΈ Rules
- Edukasi only
- No illegal activity
- Fokus: skill + mindset
Dokumentasi Python Gh0sT4n
- Daftar ISI
- Persiapan
- Roadmap
- Pengenalan
- Hello World
- Data Type
- Variabel
- Operator
- String
- Input/Ouput - I/O
- Logika Percabangan
- Perulangab
- Fungsi
- List Tuple
- Manipulasi String
- Exception
- Module
- Python Datetime
- Python Math
- Class
- Inheritance
- Akses Modifikasi
- Iterator
- Lambda
- Regex
- Scope
- Kalkulator
- Casting Tipe Data
- List & Dictionary
- Dekotator
- OOP
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
pyrightterinstall - Pastikan NodeJS aktif
Tree-sitter error
:TSUpdate
NvChad bermasalah
rm -rf ~/.local/share/nvim
rm -rf ~/.cache/nvim
nvim
Dotfiles NvChad By Gh0sT4n
Ringkasan Silabus/Roadmap
Fase 01 β Dasar (2β3 Bulan)
9 konsep kunci:
- Tipe data
- Struktur data built-in
- Control flow
- Functions & scope
- String manipulation
- File I/O
- Error handling
- List comprehension
- 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:
- OOP Fundamentals
- 4 Pilar OOP
- Magic Methods/Dunder
- Properties & Descriptors
- Functional Programming
- Iterators & Generators
- Decorators
- Context Managers
- 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:
- Async Programming
- Concurrency vs Parallelism
- Metaprogramming
- Descriptors Protocol
- Memory Management
- Python Data Model
- Performance Optimization
- C Extensions
- 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
- Buat File dengan ekstensi
.py. contoh : hello.py - Tulis Kode Hello World :
print("Hello World")print()β> Fungsi untuk menampilkan teks ke layar' 'atau" "β> Fungsi penugasan python untuk teks
- Simpan File.
- 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 :
-
Data Type Text
-
String(
str) Data Type berupa karakter string yang diapit tanda petik("" atau ''). Contoh :Lang = "Python" Lang1 ='Zig'
-
-
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
-
-
Data Type Boolean
-
Boolean(
bool) : Nilai Pernyataan Benar atau Salah. Contoh :Bl = True Bl1 = False
-
-
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])
-
-
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" }
-
-
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)
1. f-string (RECOMMENDED)
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.
| Operator | Deskripsi | Contoh |
|---|---|---|
+ | Penjumlahan | 2 + 3 = 5 |
- | Pengurangan | 5 - 2 = 3 |
* | Perkalian | 2 * 3 = 6 |
/ | Pembagian | 6 / 2 = 3.0 |
// | Pembagian bulat | 7 // 2 = 3 |
% | Modulus | 7 % 2 = 1 |
** | Pangkat | 2 ** 3 = 8 |
Contoh Penggunaan :
- 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.
| Operator | Contoh | Deskripsi |
|---|---|---|
= | x = 5 | Assign nilai |
+= | x += 3 | x = x + 3 |
-= | x -= 3 | x = x - 3 |
*= | x *= 3 | x = x * 3 |
/= | x /= 3 | x = x / 3 |
//= | x //= 3 | x = x // 3 |
%= | x %= 3 | x = x % 3 |
**= | x **= 3 | x = x ** 3 |
Contoh Penggunaan :
- 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).
| Operator | Deskripsi | Contoh |
|---|---|---|
== | Sama dengan | 2 == 2 β True |
!= | Tidak sama | 2 != 3 β True |
> | Lebih besar | 3 > 2 β True |
< | Lebih kecil | 2 < 3 β True |
>= | Lebih besar/sama | 3 >= 3 β True |
<= | Lebih kecil/sama | 2 <= 3 β True |
Contoh Penggunaan :
- 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.
| Operator | Deskripsi | Contoh |
|---|---|---|
and | DAN | True and False β False |
or | ATAU | True or False β True |
not | Negasi | not True β False |
Contoh Penggunaan :
- 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.
| Operator | Deskripsi | Contoh |
|---|---|---|
is | Sama objek | a is b |
is not | Tidak sama objek | a is not b |
Contoh Penggunaan :
- 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).
| Operator | Deskripsi | Contoh | ||
|---|---|---|---|---|
& | AND | 5 & 3 = 1 | ||
| ` | ` | OR | `5 | 3 = 7` |
^ | XOR | 5 ^ 3 = 6 | ||
~ | NOT | ~5 = -6 | ||
<< | Shift kiri | 5 << 1 = 10 | ||
>> | Shift kanan | 5 >> 1 = 2 |
Contoh Penggunaan :
- 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