4 בודקים מסוג פייתון כדי לשמור על ניקיון הקוד שלך

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

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

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

מיפי

ניתן לטעון כי Mypy הייתה מערכת בדיקת הסוגים הסטטיים הראשונה עבור Python, שכן העבודה עליה החלה בשנת 2012, והיא עדיין נמצאת בפיתוח פעיל. זהו למעשה האב-טיפוס לאופן שבו ספריות בדיקת סוגים של צד שלישי פועלות בפייתון, גם אם רבים אחרים הגיעו מאז והרחיבו את תכונותיו.

Mypy יכול להפעיל עצמאי, או משורת הפקודה, או שהוא יכול לעבוד כחלק מעורך או משילוב בין IDE. עורכי IDE רבים משלבים את Mypy; סיומת ה- Python של Visual Studio Code יכולה לעבוד איתו ישירות. בעת הפעלה, Mypy מייצר דוחות על עקביות הקוד שלך על סמך מידע הסוג שהוא מספק.

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

אם אתה מתחיל מאפס עם בסיס קוד ואתה רוצה אסטרטגיית מוך אגרסיבית מראש, תוכל להשתמש --strictבאפשרות למנוע כל קוד לא מוקלד. מצד שני, אם אתה עובד עם בסיס קוד מדור קודם שאין לו הרבה הגדרות סוג, אתה יכול להשתמש באפשרויות רגועות יותר כגון למנוע הגדרות פונקציה לא מוקפדות בלבד  --disallow-untyped-defs תוך מתן קוד לא מקליד אחר. ותמיד תוכל להשתמש בתגובות מוטבעות כמו # type: ignoreלמנוע סימון של שורות בודדות.

Mypy יכולה לעשות שימוש בקבצי PEP 484 בדל כאשר ברצונך להשתמש ברמזים מסוג ממשקים ציבוריים של מודול. נוסף על כך, מציעה Mypy stubgen, כלי שיוצר אוטומטית קבצי stub מהקוד הקיים. עבור קוד ללא הקלדה, קבצי ה- stub משתמשים בסוגים גנריים, אותם תוכלו לסמן לפי הצורך.

פיטייפ

Pytype, שנוצר על ידי גוגל, שונה מהסוג של Mypy בשימוש בהסקות במקום רק מתארי סוגים. במילים אחרות, Pytype מנסה לקבוע סוגים על ידי ניתוח זרימת קוד, במקום להסתמך אך ורק על הערות סוג.

פיטייפ טועה בצד הקלות בכל פעם שזה הגיוני לעשות זאת. אם יש לך פעולה שעובדת בזמן ריצה ולא סותרת שום הערה, Pytype לא יתחבט בה. עם זאת, המשמעות היא שחלק מהבעיות שיש לסמן (למשל, להכריז על משתנה עם סוג בנקודה אחת ואז להגדיר אותו מחדש באותו הקשר) עוברות ללא הודעה מוקדמת. בתיעוד נכתב כי דברים כאלה לא יאושרו בשלב כלשהו בעתיד.

אם תבחר להוסיף הערות סוג לקוד שלך, reveal_typeהפונקציה של Pytype תועיל  במיוחד. אם אתה מכניס בקוד שלך הצהרה שקוראת לה reveal_type(expr), Pytype מעריך ושולח exprהתראה המתארת ​​את סוגה. 

שים לב שהתנהגויות מסוימות של Pytype נשלטות על ידי הוספת תכונות לקוד עצמו. לדוגמא, אם ברצונך למנוע מ- Pytype להתלונן על תכונות חסרות או על חברי מודול המוגדרים באופן דינמי, עליך להוסיף את התכונה _HAS_DYNAMIC_ATTRIBUTES = Trueלמחלקה או למודול הנדון, בניגוד להגדרת מטא נתונים מסוג תצורת Pytype כלשהם.

זכויות יוצרים / פילאנס

זכויות יוצרים הוא בודק הפיתון של מיקרוסופט, הכלול כחלק מהסיומת Pylance עבור קוד Visual Studio. אם אתה כבר משתמש בקוד VS, הרחבה של Pylance היא הדרך הנוחה ביותר לעבוד עם זכויות יוצרים; פשוט להתקין אותו וללכת. זכויות יוצרים מספקות חוויית בדיקה טובה ומכלול טיפוסי קוד מסוג All-in-One, עם רבים מאותם נוחות והתקדמות כמו כלי ניתוח Python קודמים.

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

זכויות יוצרים גמישות מאוד בדרכים המשלימות את העיצובים של פרויקטים של פייתון בעולם האמיתי. כמו עם בודקי סוגים אחרים, ניתן להגדיר את זכויות היוצרים על בסיס פרוייקט עם קובץ תצורה בפורמט JSON בספריית הפרויקט. נתיבים בודדים ניתנים להיכלל (לעולם לא נבדק) או להתעלם מהם (שגיאות ואזהרות מדוכאים) בקובץ התצורה, והאפשרויות הן מגוונות ביותר.

בקוד VS, סביבות עבודה עם מספר שורשים יכולות לכלול תצורת זכויות יוצרים משלהן, למקרה שחלקים שונים בפרויקט זקוקים לתצורות מוך שונות. באותו אופן, אתה יכול להגדיר "סביבות ביצוע" מרובות בתוך פרויקט, שלכל אחת מהן דרכי venv או יבוא משלה.

מְדוּרָה 

נוצר על ידי מפתחים בפייסבוק ובאינסטגרם, פייר הוא למעשה שני כלים אחד: בודק סוגים (Pyre) וכלי ניתוח קוד סטטי (Pysa). השניים נועדו לעבוד יד ביד בכדי לספק רמת בדיקה וניתוח גבוהה יותר מכלים אחרים, אם כי המשתמש צריך לעשות הרמת כבדות מעטה כדי לנצל אותם עד תום.

פייר נוקט גישה דומה ל- Pytype ו- Mypy. קוד ללא הקלדה מטופל בקלילות יותר מאשר בקוד שהוקלד, כך שתוכל להתחיל עם בסיס קוד Python לא מוקלד ולהוסיף פונקצית הערות לפי פונקציה ומודול אחר מודול. העבר את המצב "קפדני" במודול, ו- Pyre יסמן כל הערות חסרות. לחלופין, תוכל להפוך את המצב הקפדני כברירת מחדל ולבטל את הסכמתך ברמת המודול. פייר יעבוד גם עם קבצי סטאב בפורמט .pyi.

ל- Pyre יש תכונה עוצמתית להעברת בסיסי קוד לפורמט שהוקלד. inferבולע אפשרות שורת הפקודה קובץ או ספרייה, עושה משכיל ניחושים לגבי סוגים משמשים, ומחיל את ההסברים לקבצים. קודם כל תרצה לבצע גיבויים של הקוד שלך! (אם ברצונך להשיג מידע מסוג מתוכנית פייתון פועלת , תוכל לעשות זאת עם פרויקט אחר של פייסבוק / אינסטגרם, MonkeyType).

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

חסרון אחד הוא שספריית הניתוחים לפגירת רכיבים של צד שלישי של Pysa עדיין קטנה, כך שתצטרך לתכנן מודל משלך. אך רבים מהניתוחים המפגעים נועדו לתוכנות שנמצאות בשימוש נרחב, כגון מסגרת האינטרנט של ג'נגו, ה- SQL Alchemy ORM וספריית מדע הנתונים Pandas, שלא לדבר על ניתוחים לבעיות נפוצות במערכת הקבצים.

איך לעשות יותר עם פייתון

  • כיצד לעבוד עם סוג הנתונים של רשימת Python
  • כיצד לארוז אפליקציות פייתון עם מזוודת BeeWare
  • כיצד להפעיל את אנקונדה זה לצד זה עם פיתונים אחרים
  • כיצד להשתמש במשקפי נתונים של פייתון
  • התחל לעבוד עם אסינכרון בפייתון
  • כיצד להשתמש ב- asyncio בפייתון
  • 3 צעדים לשיפוץ אסינכרון של פייתון
  • כיצד להשתמש ב- PyInstaller ליצירת הפעלות של Python
  • מדריך Cython: כיצד להאיץ את Python
  • כיצד להתקין את פייתון בדרך החכמה
  • כיצד לנהל פרויקטים של פייתון באמצעות שירה
  • כיצד לנהל פרויקטים של פייתון באמצעות Pipenv
  • Virtualenv ו- venv: הסברים על סביבות וירטואליות של Python
  • Python virtualenv ו- venv do's and donts
  • הסבר על השחלת פיתון ותהליכי משנה
  • כיצד להשתמש בבאגים של פייתון
  • כיצד להשתמש ב- timeit לפרופיל קוד פייתון
  • כיצד להשתמש ב- cProfile לפרופיל קוד פייתון
  • כיצד להמיר את פייתון ל- JavaScript (ובחזרה)