Sintaks Utama #
Python dirancang dengan filosofi bahwa kode harus mudah dibaca seperti teks biasa. Filosofi ini tercermin langsung pada sintaksnya: tidak ada kurung kurawal {} untuk menandai blok, tidak ada titik koma ; di akhir baris, dan struktur kode ditentukan oleh indentasi yang konsisten. Bagi yang datang dari bahasa lain seperti Java atau C, ini terasa asing di awal — tapi justru inilah yang membuat kode Python bisa dibaca hampir seperti pseudocode. Artikel ini membahas fondasi sintaks Python yang perlu kamu pahami sebelum menulis kode apapun.
Indentasi sebagai Struktur Blok #
Ini adalah hal paling fundamental yang membedakan Python dari mayoritas bahasa lain. Di Python, indentasi bukan sekadar gaya — indentasi adalah sintaks. Interpreter Python menggunakan indentasi untuk menentukan di mana sebuah blok kode dimulai dan berakhir.
# ANTI-PATTERN: tidak ada indentasi di dalam blok if
if True:
print("ini akan error") # IndentationError
# BENAR: blok kode harus diindentasi satu level ke dalam
if True:
print("ini benar")
Aturan indentasi yang perlu kamu pegang:
# Gunakan 4 spasi per level indentasi (standar PEP 8)
def hitung_nilai(nilai):
if nilai >= 90:
return "A"
elif nilai >= 75:
return "B"
elif nilai >= 60:
return "C"
else:
return "D"
# Blok bersarang menambah 4 spasi lagi per level
for i in range(3): # level 1: 0 spasi
for j in range(3): # level 2: 4 spasi
if i == j: # level 3: 8 spasi
print(i, j) # level 4: 12 spasi
Jangan campur tab dan spasi dalam satu file. Python 3 menolak file yang mencampur keduanya dan akan melempar TabError. Atur editor kamu untuk mengubah Tab menjadi 4 spasi secara otomatis — hampir semua editor modern mendukung ini.Struktur Pernyataan (Statement) #
Setiap baris di Python secara default adalah satu pernyataan. Python tidak membutuhkan tanda pemisah di akhir baris seperti titik koma ; yang wajib di C, Java, atau PHP.
# ANTI-PATTERN: titik koma di akhir baris (tidak error, tapi tidak idiomatis)
nama = "Alice";
umur = 25;
print(nama);
# BENAR: tanpa titik koma
nama = "Alice"
umur = 25
print(nama)
Beberapa pernyataan boleh ditulis dalam satu baris menggunakan titik koma, tapi ini umumnya dihindari karena mengurangi keterbacaan:
# ANTI-PATTERN: beberapa statement dalam satu baris
x = 1; y = 2; z = 3
# BENAR: satu statement per baris
x = 1
y = 2
z = 3
Melanjutkan Baris yang Panjang #
Jika sebuah pernyataan terlalu panjang, kamu bisa melanjutkannya ke baris berikutnya dengan dua cara:
# Cara 1: backslash sebagai tanda sambung (kurang disukai)
hasil = nilai_ujian + nilai_tugas + \
nilai_praktikum + nilai_kehadiran
# Cara 2: bungkus dalam tanda kurung (lebih disukai)
hasil = (
nilai_ujian
+ nilai_tugas
+ nilai_praktikum
+ nilai_kehadiran
)
# Cara ini juga berlaku untuk list, dict, dan function call
warna_favorit = [
"merah",
"biru",
"hijau",
"kuning",
]
Kata Kunci (Keywords) #
Kata kunci adalah kata-kata yang sudah memiliki makna khusus di Python dan tidak boleh digunakan sebagai nama variabel, fungsi, atau identifier lainnya.
import keyword
print(keyword.kwlist)
Output:
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await',
'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except',
'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is',
'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try',
'while', 'with', 'yield']
Daftar kata kunci dan fungsinya:
Kategori │ Kata Kunci
───────────────────┼──────────────────────────────────────
Nilai khusus │ True, False, None
Operator logika │ and, or, not, in, is
Percabangan │ if, elif, else
Perulangan │ for, while, break, continue, pass
Fungsi & kelas │ def, return, lambda, class, yield
Penanganan error │ try, except, finally, raise, assert
Import modul │ import, from, as
Scope variabel │ global, nonlocal, del
Async │ async, await
Context manager │ with
# ANTI-PATTERN: menggunakan keyword sebagai nama variabel
list = [1, 2, 3] # menimpa built-in 'list'
type = "integer" # menimpa built-in 'type'
id = 42 # menimpa built-in 'id'
# BENAR: gunakan nama yang deskriptif dan tidak bentrok
angka_list = [1, 2, 3]
tipe_data = "integer"
user_id = 42
Ekspresi dan Nilai #
Ekspresi adalah kombinasi nilai, variabel, dan operator yang menghasilkan sebuah nilai. Setiap ekspresi di Python menghasilkan nilai yang bisa langsung digunakan.
# Ekspresi aritmatika
10 + 5 # → 15
10 / 3 # → 3.3333... (selalu float di Python 3)
10 // 3 # → 3 (pembagian bulat)
10 % 3 # → 1 (sisa bagi / modulo)
2 ** 8 # → 256 (pemangkatan)
# Ekspresi perbandingan (selalu menghasilkan True atau False)
10 > 5 # → True
10 == 10 # → True
10 != 5 # → True
"abc" < "abd" # → True (perbandingan leksikografis)
# Ekspresi logika
True and False # → False
True or False # → True
not True # → False
# Ekspresi string
"Hello" + " " + "World" # → "Hello World" (concatenation)
"Ha" * 3 # → "HaHaHa" (repetition)
Ekspresi Kondisional (Ternary) #
Python memiliki bentuk ekspresi kondisional satu baris yang sering disebut ternary expression:
# ANTI-PATTERN: if-else panjang untuk assignment sederhana
if nilai >= 60:
status = "lulus"
else:
status = "tidak lulus"
# BENAR: ternary expression — lebih ringkas untuk kasus sederhana
status = "lulus" if nilai >= 60 else "tidak lulus"
# Contoh lain
label = "genap" if angka % 2 == 0 else "ganjil"
absolut = x if x >= 0 else -x
Input dan Output #
Input dan output adalah dua operasi paling dasar yang kamu butuhkan untuk berinteraksi dengan pengguna.
Output dengan print() #
# print() dasar
print("Hello, World!") # → Hello, World!
print(42) # → 42
print(3.14) # → 3.14
print(True) # → True
# Mencetak beberapa nilai sekaligus
nama = "Budi"
umur = 25
print(nama, umur) # → Budi 25 (dipisah spasi)
print(nama, umur, sep=", ") # → Budi, 25 (separator custom)
print(nama, end="") # tanpa newline di akhir
print(" " + str(umur)) # → Budi 25 (dilanjutkan di baris yang sama)
# f-string (cara paling modern dan direkomendasikan)
print(f"Nama: {nama}, Umur: {umur}") # → Nama: Budi, Umur: 25
print(f"Hasil: {10 + 5}") # → Hasil: 15
print(f"Pi: {3.14159:.2f}") # → Pi: 3.14 (format 2 desimal)
print(f"{nama!r}") # → 'Budi' (dengan tanda kutip)
Input dari Pengguna #
# input() selalu mengembalikan string
nama = input("Masukkan nama kamu: ")
print(f"Halo, {nama}!")
# ANTI-PATTERN: lupa konversi tipe saat input angka
umur = input("Masukkan umur: ")
tahun_lahir = 2024 - umur # TypeError: unsupported operand type(s) for -: 'int' and 'str'
# BENAR: konversi tipe secara eksplisit
umur = int(input("Masukkan umur: "))
tinggi = float(input("Masukkan tinggi badan (cm): "))
tahun_lahir = 2024 - umur # sekarang bekerja dengan benar
Konvensi Penamaan #
Python memiliki konvensi penamaan yang sudah disepakati komunitas melalui PEP 8. Mengikuti konvensi ini membuat kode kamu lebih mudah dibaca oleh developer Python lain.
# variabel dan fungsi → snake_case
nama_lengkap = "John Doe"
jumlah_siswa = 30
def hitung_rata_rata(nilai_list):
return sum(nilai_list) / len(nilai_list)
# konstanta → UPPER_SNAKE_CASE
BATAS_USIA = 18
TARIF_PAJAK = 0.11
DATABASE_URL = "postgresql://localhost/mydb"
# kelas → PascalCase
class PenggunaBaru:
pass
class HttpRequestHandler:
pass
# private (konvensi, bukan enforcement) → prefix underscore
class AkunBank:
def __init__(self):
self._saldo = 0 # protected (satu underscore)
self.__pin = "1234" # private (dua underscore)
# "magic" method → dua underscore di kedua sisi
class Persegi:
def __init__(self, sisi):
self.sisi = sisi
def __str__(self):
return f"Persegi dengan sisi {self.sisi}"
Ringkasan konvensi penamaan:
Tipe │ Konvensi │ Contoh
──────────────────┼──────────────────┼──────────────────────
Variabel │ snake_case │ nama_file, total_harga
Fungsi │ snake_case │ hitung_nilai(), baca_data()
Kelas │ PascalCase │ DataPengguna, HttpClient
Konstanta │ UPPER_SNAKE_CASE │ MAX_RETRY, API_KEY
Modul/file │ snake_case │ utils.py, data_parser.py
Package/folder │ snake_case │ my_project/, data_utils/
Import Modul #
Python menggunakan sistem modul untuk mengorganisasi kode. Kamu bisa mengimpor modul standar, paket pihak ketiga, atau file Python milikmu sendiri.
# Import modul penuh
import math
import os
import sys
print(math.pi) # → 3.141592653589793
print(math.sqrt(16)) # → 4.0
# Import dengan alias (berguna untuk nama yang panjang)
import numpy as np
import pandas as pd
# Import fungsi/class tertentu saja
from math import pi, sqrt, floor
from os.path import join, exists, dirname
print(pi) # → 3.141592653589793
print(sqrt(25)) # → 5.0
# ANTI-PATTERN: import wildcard — tidak jelas apa yang diimport
from math import *
from os.path import *
# BENAR: import eksplisit apa yang kamu butuhkan
from math import pi, sqrt
from os.path import join, exists
Urutan import yang disepakati PEP 8: (1) stdlib Python, (2) library pihak ketiga, (3) modul lokal. Pisahkan tiap kelompok dengan satu baris kosong. Tool seperti isort bisa mengurutkannya otomatis.Kesalahan Sintaks yang Paling Sering Ditemui #
Mengenali pola kesalahan sejak awal akan menghemat banyak waktu debugging. Berikut adalah error sintaks yang paling umum dialami pemula Python:
# 1. Lupa tanda titik dua setelah if/for/while/def/class
if x > 0 # SyntaxError: expected ':'
print(x)
# BENAR:
if x > 0:
print(x)
# ---
# 2. Indentasi tidak konsisten
def sapa(nama):
print("Halo")
print(nama) # IndentationError: unexpected indent
# ---
# 3. Tanda kurung tidak seimbang
print("Hello" # SyntaxError: '(' was never closed
hasil = (1 + 2 # SyntaxError: '(' was never closed
# ---
# 4. Penggunaan = dan == yang tertukar
if x = 10: # SyntaxError: invalid syntax (ini assignment, bukan perbandingan)
pass
# BENAR:
if x == 10: # perbandingan
pass
# ---
# 5. String tidak ditutup
pesan = "Halo dunia # SyntaxError: EOL while scanning string literal
# BENAR:
pesan = "Halo dunia"
# ---
# 6. Akses variabel sebelum didefinisikan
print(hasil) # NameError: name 'hasil' is not defined
hasil = 100
Ringkasan #
- Indentasi adalah sintaks — Python menggunakan indentasi (4 spasi) untuk menentukan blok kode, bukan kurung kurawal. Konsistensi indentasi adalah wajib, bukan opsional.
- Jangan campur tab dan spasi — Python 3 menolak file yang mencampur keduanya; atur editor untuk mengubah Tab menjadi 4 spasi.
- Tidak perlu titik koma — satu baris satu pernyataan, tanpa
;di akhir. Gunakan tanda kurung untuk melanjutkan baris panjang.- Hindari nama variabel yang menimpa built-in — jangan gunakan
list,type,id,input, dll. sebagai nama variabel.- f-string adalah cara terbaik untuk format string — lebih ringkas dan mudah dibaca dibanding
%formatting ataustr.format().- input() selalu mengembalikan string — konversi tipe dengan
int(),float(), dll. sebelum digunakan dalam operasi numerik.- Ikuti konvensi PEP 8 —
snake_caseuntuk variabel dan fungsi,PascalCaseuntuk kelas,UPPER_SNAKE_CASEuntuk konstanta.- Import eksplisit, bukan wildcard —
from math import pi, sqrtjauh lebih baik daripadafrom math import *.