Soal 1Mana cara yang benar untuk menganotasi def add(x, y): agar kedua argumen dan nilai kembali adalah int?
Type Hints — Tinggalkan Niatmu di Kode dengan : int dan -> str
Pelajari type hints Python. Signature fungsi def f(x: int) -> str:, kapan menambah anotasi variabel dan kapan tidak, serta cara IDE memakainya untuk pemeriksaan statis — hands-on.
Artikel ini membahas type hints — alat untuk meninggalkan niat "apa yang masuk ke sini" di dalam kode. Diperkenalkan di Python 3.5, mereka tumbuh lebih ekspresif dengan setiap rilis.
Masalah "Apa Tipenya?" di Bahasa Dinamis
Python adalah bahasa typed dinamis. Tulis value = 10 dan itu int; tulis value = "HELLO" dan nama yang sama sekarang str. Variabel yang sama bisa membalik tipe kapan saja — itu fleksibilitas. Sisi negatifnya adalah saat codebase kamu tumbuh atau tim mulai menyentuhnya, "apa yang dipegang variabel ini?" / "apa yang dikembalikan fungsi ini?" menjadi tidak terjawab dari kode saja.
Type hints meninggalkan informasi itu sebagai anotasi. Mereka tidak mengubah perilaku runtime. Yang mereka lakukan adalah memberi pembaca manusia petunjuk kuat dan membiarkan IDE serta static analyzer menangkap kesalahan tipe sebelumnya.
price. Dengan hint, signature fungsi sendiri memberitahumu tipe input dan output.Menganotasi Signature Fungsi
Signature fungsi adalah panggung utama untuk type hints. Anotasi argumen sebagai name: type (titik dua lalu tipe setelah nama) dan tipe return sebagai -> type (panah lalu tipe di akhir baris def).
# ❌ tanpa hint — signature tidak memberitahumu apa yang harus dikirim
def calc_tax(price, rate):
return int(price * (1 + rate))
# ✅ dengan hint — "int masuk, int keluar" jelas
def calc_tax(price: int, rate: float) -> int:
return int(price * (1 + rate))
print(calc_tax(price=1000, rate=0.1)) # 1100
Anotasi Variabel — Kapan Menulisnya dan Kapan Tidak
Type hints juga bekerja pada variabel — bentuk sama: name: type = value. Tetapi anotasi variabel jadi berisik cepat kalau kamu memakainya berlebihan, dan kebisingan mengurangi keterbacaan.
# ❌ berisik — value sudah memberitahumu tipenya
name: str = "Budi"
age: int = 30
# ✅ layak dianotasi — container kosong, init ditunda, atau tipe tidak jelas
results: list = [] # list kosong, akan di-append nanti
cache: dict = {} # mungkin ingin merinci tipe value nanti
user_id: int = fetch_id_from_session() # membuat tipe yang diharapkan tempat panggil eksplisit
Saat ragu: "fungsi selalu, variabel jarang"
Di proyek nyata, selalu anotasi signature fungsi dan method, tetapi anotasi variabel hanya saat tipe tidak jelas. age = 30 tidak butuh : int — menambahnya hanya kebisingan.
Type Hints Tidak Ditegakkan saat Runtime
Type hints hanya hint. Python tidak memeriksa atau menegakkannya saat runtime. Fungsi yang dideklarasikan def f(x: int) dengan senang menerima f("abc") — fungsi berjalan seperti biasa. Hanya kemudian, ketika perhitungan jauh di dalam body gagal pada ketidakcocokan tipe, kamu melihat TypeError atau yang serupa — dan itu adalah error runtime dari perhitungan, bukan dari hint itu sendiri.
Lalu kenapa repot? Karena sebelum fungsi pernah berjalan, editor dan static analyzer dapat mendeteksi ketidakcocokan tipe. Pylance VS Code, PyCharm, mypy, pyright — semuanya membaca hint kamu dan menggarisbawahi kesalahan dengan merah, menangkap bug sebelum eksekusi.
Runner Python browser tidak menampilkan peringatan IDE
Console di halaman ini hanya menjalankan kode kamu — itu tidak punya fasilitas pemeriksaan tipe statis seperti VS Code. Jadi menulis atau melanggar type hint tidak pernah menghasilkan garis bawah merah atau peringatan pra-jalan di sini. Manfaat sungguhan type hints — jaring pengaman peringatan editor sebelum kamu menjalankan — hanya muncul secara lokal dengan VS Code, PyCharm, dll.
Tiga Tempat Type Hints Berbuah
Cek Pemahaman
Jawab setiap pertanyaan satu per satu.
Soal 2Mana pernyataan paling akurat tentang type hints Python?
Soal 3Mana tempat paling direkomendasikan untuk menambah type hints?