Petunjuk Tipe Python: Pengetikan Statis dan Anotasi

Pelajari cara menulis petunjuk tipe dengan Python. Tingkatkan kualitas kode, aktifkan pelengkapan otomatis, dan manfaatkan mypy untuk analisis kode statis.

Coba di Editor

Ikhtisar

Python secara historis merupakan bahasa yang diketik secara dinamis, yang berarti penerjemah menyimpulkan tipe variabel saat runtime, memberikan kecepatan dan fleksibilitas kepada pengembang. Namun, seiring berkembangnya basis kode, fleksibilitas yang diketik secara dinamis ini dapat menyebabkan bug runtime yang membingungkan—seperti meneruskan daftar ke fungsi yang mengharapkan string. Untuk menjembatani kesenjangan ini,Python 3.5 memperkenalkan Petunjuk Tipe (Anotasi Tipe), yang memungkinkan pengembang untuk secara eksplisit mendokumentasikan tipe yang diharapkan dalam kode.

Petunjuk jenis tidak memengaruhi cara Python menjalankan kode Anda; penerjemah sepenuhnya mengabaikannya saat runtime. Sebaliknya, nilainya terletak pada analisis statis dan perkakas IDE. Dengan menambahkan anotasi tipe ke variabel, parameter fungsi, dan tipe kembalian, IDE Anda dapat menyediakan pelengkapan otomatis yang tepat dan langsung menandai kesalahan ketidakcocokan tipe. Alat seperti `mypy` dapat memindai basis kode Anda sebelum penerapan untuk menangkap bug secara statis, meniru pemeriksaan waktu kompilasi pada bahasa seperti TypeScript atau Java.

Kemampuan mengetik Python sangat luas. Anda dapat membuat anotasi tipe dasar seperti `str`, `int`, dan `bool`, atau menggunakan tipe lanjutan dari modul `typing` bawaan (atau koleksi standar diPython 3.9+) seperti `list[str]`, `dict[str, int]`, dan `tuple[float, float]`. Fitur seperti `Union` (atau operator pipa `|` diPython 3.10+) memungkinkan parameter menerima beberapa jenis, sedangkan `Opsional[T]` mewakili nilai yang dapat berupa jenis tertentu atau `Tidak Ada`. Menerapkan petunjuk mengetik secara dramatis meningkatkan keterbacaan dan kolaborasi tim.

Kode & Output Eksekusi

Menulis fungsi dengan anotasi tipe dan memeriksa cara menerima input.

typing_demo.py
Coba di Editor
# Type annotations for function parameters and return values
def greeting(name: str, count: int) -> str:
    return f"Hello {name}! " * count

# Type hints on standard collections (Python 3.9+)
user_roles: dict[str, str] = {
    "admin": "Alice",
    "moderator": "Bob"
}

message = greeting("Jane", 2)
print(message)
print(f"Roles configured: {user_roles}")
Keluaran Terminal
Hello Jane! Hello Jane! 
Roles configured: {'admin': 'Alice', 'moderator': 'Bob'}

Implementasi Langkah demi Langkah

  • Mencegah bug integrasi dalam basis kode tim besar
  • Mengaktifkan penyelesaian kode IDE dalam proyek kode kompleks
  • Menghasilkan struktur API dan skema validasi yang mendokumentasikan mandiri

Pertanyaan yang Sering Diajukan

Apakah petunjuk tipe menerapkan keamanan tipe saat runtime?

Tidak. Python tidak memberikan pengecualian kesalahan jika Anda meneruskan tipe selain petunjuk yang dianotasi. Untuk menerapkan pemeriksaan tipe, Anda harus menjalankan pemeriksa statis seperti mypy.

Apa perbedaan antara Any dan Union?

Any menonaktifkan pemeriksaan tipe untuk suatu variabel, memungkinkannya menampung apa pun. Union (atau T | U) membatasi variabel ke subset tipe tertentu yang ditentukan.

Topik Terkait

Sumber Daya Python yang Direkomendasikan

Perluas pengetahuan Anda dengan tutorial interaktif terkait, lembar contekan, dan perbandingan kode.