לדלג לתוכן

מבוא ל-IPython ול-Jupyter

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

מה זה IPython ובמה הוא שונה מה-REPL הרגיל

REPL זה קיצור ל-Read Eval Print Loop, זאת בדיוק שורת הפקודה שנפתחת עם python - קוראת שורה, מריצה אותה, מדפיסה תוצאה, וחוזר חלילה. זה עובד, אבל זה בסיסי מאוד.

IPython הוא בעצם REPL משודרג. הוא נותן השלמה אוטומטית חכמה בהקשה על Tab, כולל השלמה של שמות קבצים ותכונות של אובייקטים. יש לו היסטוריית פקודות נוחה שאפשר לחפש בה, צביעת תחביר, והצגה יפה יותר של מבני נתונים מורכבים. בנוסף יש לו מה שנקרא magic commands - פקודות מיוחדות שמתחילות בסימן %, כמו %timeit שמודד כמה זמן לוקח לפקודה מסוימת לרוץ, או %who שמראה את כל המשתנים שהוגדרו עד כה בסשן. אלה כלים ששווה להכיר, כי הם חוסכים המון זמן בבדיקות מהירות בזמן פיתוח.

In [1]: %timeit sum(range(1000))
15.3 µs ± 200 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

מה זה מחברת Jupyter

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

# תא 1
import pandas as pd
data = pd.read_csv("sales.csv")

# תא 2
data.head()

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

מתי להשתמש במחברת ומתי בקובץ py רגיל

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

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

הכלל הפשוט

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

לסיכום

IPython ו-Jupyter הם שני כלים שונים אבל קרובים - האחד משדרג את שורת הפקודה, השני בונה עליה חוויית עבודה שלמה בדפדפן. שניהם מעולים ללמידה וחקירה מהירה, אבל אף אחד מהם לא תחליף להרגלי פיתוח תקינים כשבונים תוכנה של ממש.

הצטרפו לקהילה בדיסקורד