2.17. Tür ipuçları¶
Python, fonksiyon parametrelerini ve dönüş değerlerini tür bilgisiyle açıklamanıza (annotate) olanak tanır. Bu açıklamalar çalışma zamanında yok sayılır – hiçbir şey onları denetlemez, hiçbir şey onlara göre dönüşüm yapmaz – ancak okuyucular ve IDE için belgeleme görevi görürler.
2.17.1. Açıklama sözdizimi¶
Bir parametre açıklaması iki nokta üst üsteden sonra gelir. Dönüş türü -> ifadesinden sonra ve gövdenin iki nokta üst üstesinden önce gelir:
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)
İpuçları, neyin geçirilmesi gerektiğini ve neyin döndürüleceğini tanımlar. add("hi", "there") çağrısı bir hata vermez – Python yine de gövdeyi çalıştırır. İpuçları bir denetim değil, bir sözleşmedir.
Bir parametrenin hem bir varsayılanı hem de bir açıklaması olabilir:
def greet(name: str, greeting: str = "hello") -> None:
print(greeting, name)
CPython, typing modülü aracılığıyla daha zengin bir gösterime (Optional, Union, generic’ler) sahiptir, ancak bunlar MicroPython’da ağır kalır ve günlük kamera kodu için nadiren gerekir.
2.17.2. Çalışma zamanında MicroPython¶
MicroPython açıklamaları ayrıştırır ve ardından yok sayar. Kamerada içe aktarılacak bir typing modülü yoktur; Optional[int] veya list[int] kullanmaya çalışmak, aygıt yazılımı (firmware) derlemesine bağlı olarak ya içe aktarmada başarısız olur ya da sessizce sıradan bir öznitelik erişimi gibi davranır.
Açıklamalarda sade tür adlarına (int, float, str, bool, bytes, list, tuple, dict) bağlı kalın. Bunların çalışma zamanında hiçbir maliyeti yoktur ve niyeti açıkça iletirler.
2.17.3. IDE bunları nasıl kullanır¶
IDE, araç ipuçlarını, otomatik tamamlamayı ve satır içi ipuçlarını yönlendirmek için açıklamaları okur. -> int ile açıklanmış bir fonksiyon, imleç çağrının üzerine geldiğinde dönüş türü olarak int gösterir. : str ile açıklanmış bir parametre, fonksiyon gövdesi içinde argüman üzerinde string metotlarını otomatik tamamlar.
Bu, onları yok sayan bir çalışma zamanında açıklama yazmanın pratik getirisidir: betik kamerada çalışırken hiçbir maliyeti olmadan düzenleyiciden daha iyi destek almak.
2.17.4. Değişken açıklamaları¶
Sade atamalardaki açıklamalar da aynı şekilde çalışır:
threshold: float = 0.5
name: str = "OpenMV"
Bunlar da çalışma zamanında yok sayılır. Asıl kullanımları, sağ taraf onu belirgin kılmadığında amaçlanan türü belirgin hale getirmektir – tipik olarak, başlangıç değeri daha sonra değiştirilecek bir yer tutucu olduğunda.