Python Function Annotations: Fitur Keren yang Sering Diremehkan, Padahal Bikin Kamu Terlihat Programmer Cerdas

Python Function Annotations: Fitur Keren yang Sering Diremehkan, Padahal Bikin Kamu Terlihat Programmer Cerdas

id10 min read • 1013 views

Python Function Annotations: Fitur Keren yang Sering Diremehkan, Padahal Bikin Kamu Terlihat Programmer Cerdas

Kalau kamu ngoding Python cukup lama, mungkin kamu sudah pernah lihat orang nulis parameter fungsi pakai format aneh begini:

def myfunc(a: int, b: str) -> bool:
    ...

Lalu kamu bertanya:
 “Ini apaan? Beneran Python? Kok mirip-mirip Java tapi versi chill?”

Selamat, kamu baru nyenggol fitur bernama function annotations, salah satu fitur Python yang kayak anak tengah: ada, penting, tapi sering diabaikan karena nggak bikin error sekalipun kamu salah pakai. Namun justru karena fleksibel inilah annotations jadi sangat powerful, terutama di dunia modern yang penuh linter, type checker, dan IDE pintar.

Hari ini kita akan bahas ini dengan gaya santai, tapi tetap memetakan apa yang sebenarnya penting.

Apa Itu Function Annotations?

Function annotations adalah cara untuk menambahkan metadata ke parameter fungsi dan ke nilai return-nya.

Kata kuncinya: metadata, bukan aturan keras.
Python tuh sopan, dia cuma bilang:

“Oke bro, kamu bilang parameternya int. Noted. Tapi kalau nanti kamu masukin string, ya udah… jalan terus.”

Makanya annotations tidak berpengaruh pada eksekusi program. Python tidak marah, tidak ngambek, tidak ceramah.

Annotations lebih diperuntukkan untuk:

  • IDE (VSCode, PyCharm)
  • dokumentasi otomatis
  • static type checker (mypy, pyright)
  • programmer lain biar nggak salah paham tentang “fungsi ini maunya apa sih?”

Sebagai catatan sejarah, fitur ini masuk lewat PEP 3107, agar dokumentasi fungsi bisa nempel di definisinya, tidak hanya lewat docstring.

Baca Juga

 

Contoh Dasar Anotasi: Menandai Tipe Parameter

Mari lihat contoh klasik:

def myfunction(a: int, b: int):
   c = a+b
   return c

  
print (myfunction(10,20))
print (myfunction("Hello ", "Python"))

Output:

30
Hello Python

Kamu lihat yang terjadi?
Kamu bilang a:int dan b:int… tapi Python masih dengan santainya menerima string. Tidak ada error. Dua string dijumlahkan? Ya sudah, tinggal digabung.

Inilah bukti Python itu bukan bahasa yang bossy. Dia cuma bilang “baik, saya catat tujuanmu”, tapi eksekusi tetap fleksibel.

 

Annotations Bukan Type Enforcement — Ini Bukan Java

Banyak pemula menganggap:

“Kalau aku kasih a: int, nanti Python bakal maksa input harus integer, kan?”

Enggak bro.

Python masih dynamically typed.
Annotations itu cuma “catatan pinggir”.

Kalau kamu mau Python benar-benar mengecek tipe, kamu butuh:

  • mypy
  • pydantic
  • typeguard
  • beartype

—but that’s another story.

 

Menggunakan Anotasi di Return Type

Selain anotasi parameter, kamu juga bisa memberi anotasi pada nilai balik fungsi.

Sintaksnya:

  • (parameter) -> return_annotation :

Contoh:

def myfunction(a: int, b: int) -> int:
   c = a+b
   return c
print(myfunction(56,88))
print(myfunction.__annotations__)

Output:

144
{'a': <class 'int'>, 'b': <class 'int'>, 'return': <class 'int'>}

Nah, di sini kita mulai lihat gunanya annotations.
Kamu bisa akses metadata-nya via . __annotations__, sebuah dictionary yang otomatis dibuat Python.

Ini bukan hanya untuk gaya-gayaan.
Static type checker bisa baca metadata ini, IDE bisa kasih color coding, developer lain bisa paham maksud fungsi tanpa baca tulisan panjang.

 

Annotations Tidak Harus Berisi Tipe — Bisa Apa Saja!

Python itu liberal banget: anotasi boleh berupa tipe, string, atau ekspresi Python apa pun.

Contoh:

def total(x : 'marks in Physics', y: 'marks in chemistry'):
   return x+y
print(total(86, 88))
print(total.__annotations__)

Output:

174
{'x': 'marks in Physics', 'y': 'marks in chemistry'}

Dari sini kita belajar:

  • anotasi bisa jadi string biasa
  • anotasi bisa dipakai untuk dokumentasi
  • Python tidak peduli, tetap menjalankan kode

Annotation seperti ini bisa digunakan oleh:

  • generator dokumentasi
  • framework belajar
  • sistem API automatic documentation
  • tools internal perusahaan

Kamu bebas pakai anotasi untuk hal kreatif seperti:

  • menandai parameter yang “harus berupa id user”
  • memberi batasan bisnis
  • menulis pesan lucu di metadata (serius, ini valid)

 

Annotation + Default Argument = Tetap Aman

Kamu juga bisa mencampur anotasi dengan default argument:

def myfunction(a: "physics", b:"Maths" = 20) -> int:
   c = a+b
   return c


print (myfunction(10))

Default argument ditulis setelah anotasi.
Aturan Python tetap sama: default harus diletakkan setelah parameter wajib.

Nggak ada drama, semuanya jalan mulus.

 

Function Adalah Objek — dan Anotasinya Bisa Diinspeksi

Python itu bergaya object-oriented tapi tanpa ribet.
Fungsi pun dianggap objek, dan salah satu atributnya adalah __annotations__.

Kamu bisa melihat apa saja atribut objek fungsi dengan:

print(dir(myfunction))

Output-nya panjang, tapi sebagian yang penting:

'__annotations__', '__defaults__', '__doc__', '__name__', '__qualname__', ...

__annotations__ adalah dictionary yang berisi semua anotasi parameter + return value.

 

Kenapa Function Annotations Penting di Dunia Modern?

(Ini bagian pendalaman, gaya agak bad boy—tenang, tetap informatif)

1. Karena coding sekarang bukan kerja sendirian

Di zaman Python 2, banyak orang masih coding ala ninja: cepat, fleksibel, tapi berantakan.
Di Python modern?
Project besar → banyak programmer → anotasi jadi penyelamat.

Annotations membuat kode lebih:

  • mudah dipahami
  • mudah didokumentasikan
  • mudah dicek otomatis

Tanpa harus menulis docstring panjang yang sering kedaluwarsa.

 

2. IDE jadi jauh lebih pintar

VSCode, PyCharm, Sublime LSP—semuanya makin “berotak” kalau kamu pakai anotasi.

Manfaatnya:

  • auto-complete lebih akurat
  • deteksi bug lebih cepat
  • refactor lebih aman
  • warning masalah tipe langsung muncul

Dalam project besar, fitur ini menyelamatkan berjam-jam debugging yang nggak perlu.

 

3. Static type checking adalah masa depan

Bahkan Guido van Rossum (bapak Python) bilang di masa depan Python akan makin “type-friendly”.

Annotations adalah pondasi dari:

  • mypy
  • pyright
  • pydantic
  • FastAPI
  • dataclasses
  • attrs

Banyak framework modern memanfaatkan metadata anotasi untuk validasi otomatis, schema generator, dan API documentation.

Contoh paling terkenal: FastAPI.
Kalau kamu kasih anotasi, dia:

  • generate dokumentasi otomatis
  • validasi input
  • menolak tipe tidak valid

Tanpa kamu perlu nulis kode ekstra.

 

4. Bikin kode kamu terlihat profesional

Kalau kamu kirim CV dengan contoh kode tanpa anotasi, tampilannya “Python jadul”.
Kalau kamu beri anotasi rapi, semua parameter jelas, return type jelas…
HR dan reviewer code langsung suka.

Annotations adalah estetika + kualitas engineering.

 

5. Mencegah kesalahan manusia yang klasik

Jenis error paling mainstream:

  • kirim integer padahal fungsi butuh string
  • return list padahal harusnya dict
  • parameter salah urutan
  • developer baru nggak ngerti alur datanya

Annotations bukan obat, tapi setidaknya memberi tanda besar:

“HEY BRO, PARAMETER INI HARUSNYA ‘INT’ LHO!”

Walaupun Python tetap akan jalan dengan tipe lain, minimal kamu punya rambu peringatan.

 

Filosofi di Balik Annotations: Python Tanpa Kekangan

Python tidak memilih jalan “ketat”, seperti:

  • Java
  • C#
  • Go

Python tetap pada filosofi:

“We’re all adults here.”

Makanya dia tidak memaksa tipe tertentu.
Annotations adalah fitur informasi, bukan aturan.
Kamu boleh nurut, boleh juga bandel. Python nggak marah.

Tapi dunia modern menghargai developer yang rapi, jadi lebih baik tetap pakai anotasi untuk kejelasan.

 

Apakah Function Annotations Wajib?

Tidak wajib, tapi sangat disarankan untuk:

  • backend development
  • data processing
  • machine learning pipeline
  • API
  • project kolaboratif
  • aplikasi skala besar

Untuk script kecil 10–20 baris?
Ya nggak perlu juga.

 

Ringkasan Bad Boy: Apa yang Harus Kamu Ingat?

  • Function annotations = metadata, bukan enforce tipe
  • Python tidak akan menghalangi kamu mengirim tipe salah
  • Annotations berguna banget dengan tools modern
  • Bisa dipakai untuk tipe, string, atau ekspresi bebas
  • Default argument tetap bisa dipakai
  • Metadata bisa diakses lewat __annotations__
  • IDE jadi jauh lebih cerdas
  • FastAPI, Pydantic, mypy—semua cinta anotasi

 

Penutup

Function Annotations mungkin terlihat kecil dan simpel, tapi efeknya besar untuk ekosistem Python modern.
Dia tidak memaksa, tidak mendikte, tidak mengekang.
Tapi dia membantu kamu, tim kamu, IDE kamu, dan masa depan kode kamu.

Kalau kamu ingin terlihat programmer berkelas, rapi, tidak barbar, dan siap menghadapi proyek besar—belajarlah memakai function annotations sejak sekarang.

Series: Python
  1. Pengertian dan Kegunaan Bahasa Pemrograman Python
  2. Phyton 1 : Tutorial Pengenalan Dasar
  3. Phyton 2 : Macam Penulisan Sintaks
  4. Phyton 3 : Konsep Variabel dan Data
  5. Phyton 4 - Cara Mengambil Input dan Output
  6. Phyton 5 : Jenis-jenis Operator
  7. Phyton 6 - Percabangan
  8. Phyton 7 - Perulangan
  9. Phyton 8 - Struktur Data List
  10. 4 Variasi Fungsi Print () Pada Phyton
  11. Tutorial Python: Struktur Data Dictionary
  12. Phyton 9 - Struktur Data Tuple
  13. Phyton 9 : Struktur Data Tuple Part 2
  14. 5 Variasi Coding Python dengan Fungsi Concatenate, Yuk, Coba
  15. PyScript: Masa Depan Python di Browser ?
  16. 7 Hal Dasar yang Harus Diketahui Tentang Dictionary pada Python
  17. Memahami Fungsi dan Prosedur pada Python
  18. 6 Proyek Coding Python untuk Meningkatkan Portofolio Anda
  19. Tutorial Python: Membaca dan Menulis File dengan Lebih Mendalam
  20. Cara Baca Dan Parse File CSV di Python
  21. 7 Teknik Membuat Dictionary di Python dengan Data dari Berbagai Sumber
  22. 5 Kesalahan Umum dalam Menggunakan Dictionary di Python dan Cara Menghindarinya
  23. Belajar Python: Proses Data JSON dari File dan API Web
  24. Belajar Python: Buat Fungsi Dengan Lambda Expression
  25. Apa Maksud dari *args dan kwargs pada Python?
  26. Tutorial Membuat 3 Jenis Kalkulator Dengan Python
  27. Panduan Lengkap: Cara Menghapus Item di List Python Tanpa Drama
  28. Cara Bangun Dashboard di Jupyter Pakai Solara
  29. 6 Perintah pip yang Harus Diketahui Setiap Developer Python
  30. Panduan Lengkap Menggunakan pip: Manajer Paket Python yang Wajib Dikuasai
  31. Rekomendasi 6 Framework Terbaik untuk Python: Dari Santai Sampai Superhero!
  32. Benar Nggak Sih Python Ramah untuk Programmer Pemula?
  33. Optimasi Performa Perbandingan Dokumen di Python: Ketika CPU Lo Kerja Rodi!
  34. Mengupas Tuntas Cara Mengiterasi Dictionary di Python: Panduan Lengkap yang Gak Bikin Pusing!
  35. 5 Proyek AI Seru yang Bisa Lo Bangun Weekend Ini dengan Python
  36. Rust vs Python: Duel Sengit Bahasa Pemrograman! Mana yang Cocok Buat Lo?
  37. 6 Trik Python Terbaru 2025 yang Wajib Dicoba Programmer
  38. Tutorial Lengkap Membuat News Aggregator Menggunakan Python
  39. Stop Nulis Function Python Kayak Gini, Bro!
  40. 7 Python Decorators yang Bikin Kode Lo Makin Canggih
  41. Trik Python debugging yang wajib lo coba.
  42. Membangun List di Python: Filosofi, Teknik, dan Tips Anti-Kudet
  43. DERET FAKTORIAL: SI "BAHAN VIRAL" MATEMATIKA YANG BIKIN KODE LO NAIK LEVEL!
  44. Project Python Seru: Bikin Script Otomatisasi Pengorganisir File (Biar Folder Download Nggak Kayak Gudang)
  45. Automating Email Sending Via Phyton – Biar Jempol Lo Pensiun Dini
  46. Project 2: Automating Web Scraping for Data Collection dengan Python
  47. Automatisasi Tugas GUI dengan PyAutoGUI
  48. Cara Lama vs Cara Kekinian: Belajar dataclass Python
  49. Automatisasi Laporan PDF dengan Python
  50. Membongkar Rahasia field() di Python: Kendali Penuh atas Dataclass
  51. Praktik Lanjutan Menulis Kode Python yang Bersih dan Ramah Pemula
  52. Python Function Annotations: Fitur Keren yang Sering Diremehkan, Padahal Bikin Kamu Terlihat Programmer Cerdas
  53. Python Keyword Arguments: Panduan Bad Boy Buat Programmer Biar Nggak Salah Urus Function
  54. Belajar Fungsi Tanpa Parameter Python dari Nol: Panduan Lengkap Buat Pemula Sampai Nyantol di Kepala
  55. Tutorial Coding: Keluar dari Plateau of False Competence di Python
  56. Plotting Graph Menggunakan Seaborn di Python
  57. Mutable vs Immutable Objects di Python: Konsep Dasar yang Sering Diremehkan
  58. Python time.sleep() – Cara Mudah Memberi Jeda pada Program Kamu
  59. Mengapa Saya Berhenti Menggunakan Class di Python (Dan Apa yang Saya Gunakan Sebagai Gantinya)
  60. Different Delay Time of Python sleep() – Mengatur Jeda Sesuai Kebutuhan Program
  61. Mengenal Python math Module: Panduan Lengkap untuk Operasi Matematika di Python
Published on December 06, 2025
Last updated on June 03, 2026

If you like this post and want to support us, you can support us via buymeacoffee or trakteer.