2.17. רמזי טיפוס (Type hints)

Python מאפשרת להוסיף הערות (annotate) לפרמטרים של פונקציה ולערכי ההחזרה עם מידע על טיפוס. ההערות מתעלמים מהן בזמן ריצה – שום דבר אינו בודק אותן, שום דבר אינו ממיר על בסיסן – אך הן משמשות כתיעוד עבור קוראים ועבור ה-IDE.

2.17.1. תחביר הערות

הערת פרמטר באה אחרי נקודתיים. טיפוס ההחזרה בא אחרי -> ולפני הנקודתיים של הגוף:

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)

הרמזים מתארים מה צריך להיות מועבר פנימה ומה יוחזר. קריאה ל-add("hi", "there") אינה מעלה שגיאה – Python מריצה את הגוף בכל מקרה. הרמזים הם חוזה, לא בדיקה.

לפרמטר יכולים להיות גם ברירת מחדל וגם הערה:

def greet(name: str, greeting: str = "hello") -> None:
    print(greeting, name)

ל-CPython יש סימון עשיר יותר (Optional, Union, גנריקה) דרך המודול typing, אך אלה כבדים ב-MicroPython ונדרשים רק לעיתים נדירות לקוד מצלמה יומיומי.

2.17.2. MicroPython בזמן ריצה

MicroPython מנתחת הערות ואז מתעלמת מהן. אין מודול typing לייבא ממנו על המצלמה; ניסיון להשתמש ב-Optional[int] או list[int] או ייכשל בייבוא או יתנהג בשקט כגישה רגילה לתכונה, תלוי ב-build של הקושחה.

היצמדו לשמות טיפוס פשוטים (int, float, str, bool, bytes, list, tuple, dict) בהערות. הם לא עולים דבר בזמן ריצה ומעבירים את הכוונה בבהירות.

2.17.3. כיצד ה-IDE משתמש בהם

ה-IDE קורא הערות כדי להפעיל חלוניות הסבר, השלמה אוטומטית, ורמזים מוטמעים. פונקציה עם ההערה -> int מציגה int כטיפוס ההחזרה שלה כשהסמן מרחף על הקריאה. פרמטר עם ההערה : str משלים אוטומטית מתודות מחרוזת על הארגומנט בתוך גוף הפונקציה.

זהו התגמול המעשי של כתיבת הערות על סביבת ריצה שמתעלמת מהן: תמיכה טובה יותר מהעורך ללא עלות כלל כשהסקריפט רץ על המצלמה.

2.17.4. הערות משתנים

הערות על השמות רגילות עובדות באותו אופן:

threshold: float = 0.5
name: str = "OpenMV"

גם מהן מתעלמים בזמן ריצה. השימוש העיקרי שלהן הוא הפיכת הטיפוס המיועד לברור כאשר הצד הימני אינו עושה אותו ברור – בדרך כלל כאשר הערך ההתחלתי הוא מציין-מקום שיוחלף מאוחר יותר.