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.
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.
# 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}")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
Memahami variabel Python dan tipe data inti (string, integer, float, boolean). Panduan pemula lengkap untuk penugasan memori dengan Python.
Fungsi PythonFungsi master Python. Pelajari cara menulis kode yang dapat digunakan kembali menggunakan def, menentukan argumen, mengembalikan nilai, dan memahami cakupan lokal dan global.
Sumber Daya Python yang Direkomendasikan
Perluas pengetahuan Anda dengan tutorial interaktif terkait, lembar contekan, dan perbandingan kode.
Cara Memeriksa Tipe Data dengan Python
Pelajari cara memeriksa tipe data dengan Python. Pahami kapan harus menggunakan type() vs isinstance(), menangani kelas khusus, dan menulis validasi pemeriksaan tipe yang aman.
Lembar
Pelajari konversi tipe implisit dan eksplisit dengan Python. Konversi antara string, bilangan bulat, float, daftar, set, dan kamus.
Python vs TypeScript: Skrip Dinamis vs Web Type-Safe
Bandingkan Python dan TypeScript. Pelajari tentang sistem tipe struktural, metadata dekorator, pemeriksaan kompiler, waktu proses web, dan alat pengembang.