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 atau str.format().
  • input() selalu mengembalikan string — konversi tipe dengan int(), float(), dll. sebelum digunakan dalam operasi numerik.
  • Ikuti konvensi PEP 8snake_case untuk variabel dan fungsi, PascalCase untuk kelas, UPPER_SNAKE_CASE untuk konstanta.
  • Import eksplisit, bukan wildcardfrom math import pi, sqrt jauh lebih baik daripada from math import *.

← Sebelumnya: Instalasi   Berikutnya: Komentar →

About | Author | Content Scope | Editorial Policy | Privacy Policy | Disclaimer | Contact