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"
גם מהן מתעלמים בזמן ריצה. השימוש העיקרי שלהן הוא הפיכת הטיפוס המיועד לברור כאשר הצד הימני אינו עושה אותו ברור – בדרך כלל כאשר הערך ההתחלתי הוא מציין-מקום שיוחלף מאוחר יותר.