2.17. Petunjuk tipe¶
Python memungkinkan Anda memberi anotasi pada parameter fungsi dan nilai kembalian dengan informasi tipe. Anotasi tersebut diabaikan saat runtime -- tidak ada yang memeriksanya, tidak ada yang mengonversi berdasarkannya -- tetapi berfungsi sebagai dokumentasi bagi pembaca dan IDE.
2.17.1. Sintaks anotasi¶
Anotasi parameter ditulis setelah tanda titik dua. Tipe kembalian ditulis setelah -> dan sebelum tanda titik dua isi fungsi:
def greet(name: str) -> None:
print("hello,", name)
def add(a: int, b: int) -> int:
return a + b
def average(values: list) -> float:
return sum(values) / len(values)
Petunjuk ini mendeskripsikan apa yang seharusnya diteruskan dan apa yang akan dikembalikan. Memanggil add("hi", "there") tidak memunculkan pengecualian -- Python tetap menjalankan isinya. Petunjuk ini adalah kontrak, bukan pemeriksaan.
Sebuah parameter dapat memiliki nilai default sekaligus anotasi:
def greet(name: str, greeting: str = "hello") -> None:
print(greeting, name)
CPython memiliki notasi yang lebih kaya (Optional, Union, generics) melalui modul typing, tetapi itu terlalu berat untuk MicroPython dan jarang dibutuhkan dalam kode kamera sehari-hari.
2.17.2. MicroPython saat runtime¶
MicroPython mengurai anotasi dan kemudian mengabaikannya. Tidak ada modul typing yang dapat diimpor di kamera; mencoba menggunakan Optional[int] atau list[int] akan gagal diimpor atau berperilaku diam-diam sebagai akses atribut biasa, tergantung pada build firmware.
Gunakan hanya nama tipe sederhana (int, float, str, bool, bytes, list, tuple, dict) dalam anotasi. Tidak ada biaya saat runtime dan menyampaikan maksud dengan jelas.
2.17.3. Cara IDE menggunakannya¶
IDE membaca anotasi untuk menampilkan tooltip, autocomplete, dan petunjuk inline. Fungsi yang dianotasi dengan -> int menampilkan int sebagai tipe kembaliannya saat kursor melayang di atas pemanggilan. Parameter yang dianotasi dengan : str melengkapi otomatis metode string pada argumen di dalam isi fungsi.
Inilah manfaat praktis dari penulisan anotasi pada runtime yang mengabaikannya: dukungan editor yang lebih baik tanpa biaya sama sekali ketika skrip berjalan di kamera.
2.17.4. Anotasi variabel¶
Anotasi pada penugasan biasa bekerja dengan cara yang sama:
threshold: float = 0.5
name: str = "OpenMV"
Ini juga diabaikan saat runtime. Penggunaannya yang utama adalah membuat tipe yang dimaksudkan menjadi jelas ketika sisi kanan tidak memperlihatkannya dengan jelas -- biasanya ketika nilai awal adalah penampung sementara yang akan diganti nanti.