Back to IF5100 Pemrograman untuk Data Analitik

Objek, Variabel, Tipe, dan Ekspresi Python

Questions/Cues

  • Apa isi sebuah program Python dan apa beda definisi vs command?
  • Apa arti “semua di Python adalah objek” dan apa itu objek scalar vs non-scalar?
  • Apa empat tipe scalar dasar dan bagaimana melakukan cast antar tipe?
  • Bagaimana aturan tipe hasil operator aritmetika pada int dan float?
  • Apa arti Python bertipe “strong tapi dynamic”?
  • Apa yang terjadi di memori saat variabel di-assign ulang?

Reference Points

  • IF5100 — Python Review (Slides 10-22)

Program, Definisi, dan Command

Sebuah program Python adalah sekuens definisi dan command. Definisi dievaluasi, sedangkan command (statement) dieksekusi oleh interpreter di dalam shell dan menginstruksikan interpreter melakukan sesuatu. Command bisa diketik langsung di shell, atau disimpan dalam file yang lalu dibaca dan dievaluasi oleh shell.

Objek dan Tipe

Program memanipulasi objek data. Setiap objek punya tipe yang menentukan operasi apa yang bisa dikenakan padanya — analogi: Ana adalah manusia sehingga bisa berjalan dan berbahasa Inggris; Chewbacca adalah wookiee sehingga bisa berjalan dan “mwaaarhrhh”. Objek Python dibagi menjadi scalar (tak bisa dipecah lagi) dan non-scalar (punya struktur internal yang bisa diakses). Di Python, semua adalah objek — bahkan angka: coba (5).__add__(6) yang setara dengan 5 + 6.

Objek Scalar dan type()

Empat tipe scalar dasar:

TipeArtiContoh
intbilangan bulat5
floatbilangan real3.27
boolnilai BooleanTrue, False
NoneTypetipe khusus dengan satu nilaiNone

Fungsi type() menampilkan tipe sebuah objek: type(5)int, type(3.0)float, type("hello")str.

Konversi Tipe (Cast)

Objek satu tipe bisa dikonversi ke tipe lain:

  • float(3)3.0 (int ke float)
  • int(3.9)3 (float dipotong/truncate, bukan dibulatkan)
  • int("3")3 (string ke int)
  • int("hello")error (string bukan representasi angka)

Ekspresi dan Operator

Ekspresi menggabungkan objek dan operator; setiap ekspresi punya nilai yang punya tipe. Bentuk sederhana: <objek> <operator> <objek>.

Operator pada int dan float — jika keduanya int hasilnya int; jika salah satu atau keduanya float hasilnya float:

  • i + j jumlah, i - j selisih, i * j hasil kali
  • i / j pembagian (selalu menghasilkan float)
  • i % j sisa bagi (modulo)
  • i ** j i pangkat j

Sistem Tipe Python: Strong tapi Dynamic

Ada dua sumbu klasifikasi sistem tipe: strong vs weak (seberapa ketat bahasa mencegah operasi antar tipe yang tidak kompatibel) dan static vs dynamic (kapan tipe diperiksa — saat kompilasi atau saat runtime). Python bersifat strong tapi dynamic: 3 + "hi" langsung error (strong — tidak ada koersi diam-diam), tetapi tipe sebuah nama baru diketahui saat program berjalan dan bisa berubah (dynamic).

Binding Variabel ke Nilai

Tanda = adalah assignment: mengikat sebuah nama variabel ke sebuah nilai yang tersimpan di memori.

pi = 3.14159
pi_approx = 22/7

Nilai yang terkait sebuah nama diperoleh kembali dengan menyebut namanya (mis. mengetik pi). Nama bisa di-bind ulang lewat assignment baru; nilai lama mungkin masih ada di memori tetapi handle-nya hilang. Penting: nilai turunan tidak otomatis dihitung ulang saat salah satu inputnya berubah.

pi = 3.14
radius = 2.2
area = pi * (radius ** 2)   # area = 15.1976
radius = radius + 1         # radius jadi 3.2, TAPI area tetap 15.1976
flowchart LR
    pi["pi"] --> v314["3.14"]
    radius["radius"] -. binding lama .-> v22["2.2"]
    radius --> v32["3.2"]
    area["area"] --> v151["15.1976 (tak ikut berubah)"]

String

String memuat huruf, karakter khusus, spasi, digit, unicode, biner — diapit kutip tunggal atau ganda. String multiline diapit tiga kutip tunggal/ganda.

hi = 'hello there'
hello = "world"
doc = """This is
a document"""

Operasi: konkatenasi dengan + dan repetisi dengan *.

name = "ana"
greet = hi + name            # "hello thereana"
silly = hi + " " + name * 3  # "hello there anaanaana"

Input dan Output Dasar

input(prompt) mengambil masukan (selalu bertipe string) dari keyboard konsol; print(...) menampilkan keluaran ke layar konsol.

text = input("Type anything... ")
print(5 * text)

Jika pengguna mengetik 2, text adalah string "2", sehingga 5 * text menghasilkan "22222" (repetisi string), bukan 10.

Summary

Program Python adalah sekuens definisi (dievaluasi) dan command (dieksekusi interpreter). Semua data adalah objek dengan tipe yang menentukan operasi validnya; objek scalar (int, float, bool, NoneType) tak bisa dipecah, non-scalar punya struktur internal. type() memeriksa tipe; cast lewat int(), float(), str()int() memotong float, dan int("hello") error. Ekspresi <objek> <operator> <objek> punya nilai bertipe; aritmetika int menghasilkan int, tetapi hadirnya satu float (atau operator /) menghasilkan float. Python bertipe strong (tak ada koersi diam-diam, 3 + "hi" error) tetapi dynamic (tipe diketahui saat runtime). = mengikat nama ke nilai di memori; assignment ulang mengganti binding, dan nilai turunan seperti area tidak dihitung ulang otomatis. String diapit kutip tunggal/ganda (tiga kutip untuk multiline), mendukung konkatenasi + dan repetisi *; input() selalu mengembalikan string.