פייתון/פייתון גרסה 3/קונסולים בתוכנות שונות
הפרק הקודם · תוכן העניינים · הפרק הבא
קונסול פייתון מאפשר להקליד פקודה או ביטוי ולקבל תוצאה מידית. הקונסול מתאים לניסויים קצרים, לבדיקת רעיון ולחקירת ערכים בזמן פיתוח. תוכנית ארוכה, לעומת זאת, מומלץ לכתוב בקובץ בעל הסיומת .py, לשמור ולהריץ מחדש.
המראה המדויק של הקונסול משתנה בין תוכנות, אך עקרון העבודה דומה: סביבת העבודה מפעילה מפרש פייתון מסוים, שומרת את המשתנים בזיכרון ומציגה פלט או הודעת שגיאה.
מטרות הלמידה
[עריכה]בסיום הפרק תוכלו:
- להבחין בין מסוף מערכת, קונסול פייתון ועורך קוד;
- לפתוח קונסול בכמה סביבות פיתוח נפוצות;
- לבדוק באיזה מפרש, גרסה ותיקיית עבודה הקונסול משתמש;
- לזהות תקלות שנגרמות מבחירת מפרש או מתיקיית עבודה שגויים;
- לבחור מתי להשתמש בקונסול ומתי בקובץ תוכנית.
מושגים בסיסיים
[עריכה]| מושג | משמעות |
|---|---|
| מפרש (interpreter) | התוכנית שמבצעת את קוד פייתון. |
| REPL | קיצור של Read–Evaluate–Print Loop: קריאת קלט, חישובו, הצגת התוצאה וחזרה להמתנה לפקודה הבאה. |
| קונסול או Shell | חלון אינטראקטיבי שמחובר למפרש. בקונסול פייתון הרגיל מופיע הסימן >>>.
|
| מסוף (terminal) | חלון פקודות של מערכת ההפעלה, שבו אפשר להפעיל את פייתון וגם תוכניות אחרות. |
| עורך קוד | חלון לכתיבה ולשמירה של קובצי תוכנית. עורך אינו בהכרח מריץ את הקוד בעצמו. |
| IDE | סביבת פיתוח משולבת הכוללת בדרך כלל עורך, הרצה, ניפוי שגיאות וקונסול. |
| Kernel | תהליך שמבצע קוד עבור סביבת מחברות או קונסול מתקדם, למשל Jupyter או Spyder. |
בדיקה ראשונה בכל קונסול
[עריכה]לאחר פתיחת קונסול, הריצו את הקוד הבא:
import os
import sys
print("Python:", sys.version)
print("Interpreter:", sys.executable)
print("Working directory:", os.getcwd())
שלוש השורות עונות על שאלות חשובות:
- איזו גרסת פייתון פועלת?
- מהו הנתיב המדויק של המפרש?
- מאיזו תיקייה התוכנית מחפשת קבצים יחסיים?
אם חבילה הותקנה אך import נכשל, השוו בין sys.executable בקונסול לבין המפרש שבו הופעלה ההתקנה.
קונסול פייתון מתוך מסוף המערכת
[עריכה]זהו הקונסול הבסיסי ביותר, והוא אינו תלוי בסביבת פיתוח מסוימת.
ב-Windows אפשר לנסות:
py
או:
python
ב-macOS ובלינוקס הפקודה הנפוצה היא:
python3
לאחר ההפעלה יופיע בדרך כלל ה-prompt הבא:
>>> 2 + 3
5
>>> name = "דנה"
>>> name.upper()
'דנה'
הסימן >>> מציין שהמפרש ממתין לפקודה חדשה. הסימן ... מציין שהפקודה טרם הושלמה, למשל בתוך לולאה או הגדרת פונקציה:
>>> for number in range(3):
... print(number)
...
0
1
2
יש להזין שורה ריקה כדי לסיים בלוק רב־שורות בקונסול הרגיל. ליציאה אפשר להקליד:
>>> exit()
אפשר גם להשתמש ב-Ctrl+D ב-macOS ובלינוקס, או ב-Ctrl+Z ולאחר מכן Enter ב-Windows.
IDLE
[עריכה]IDLE היא סביבת פיתוח ולמידה שמגיעה עם התקנות רבות של Python. היא כוללת עורך וחלון בשם Python Shell.
פתיחת הקונסול
[עריכה]- ב-Windows חפשו IDLE בתפריט ההתחלה.
- אם התוכנית מותקנת אך קיצור הדרך אינו מופיע, נסו במסוף:
python -m idlelib. - בחלון העורך אפשר להריץ את הקובץ באמצעות Run → Run Module או בדרך כלל באמצעות F5.
הרצת קובץ גורמת ל-IDLE להפעיל מחדש את ה-Shell, ולכן משתנים מניסוי קודם עשויים להימחק. זוהי התנהגות מועילה: הקובץ נבדק בסביבה נקייה יותר.
מתי IDLE מתאימה?
[עריכה]- לימוד ראשוני בלי התקנת IDE גדול;
- ניסוי בפקודות קצרות;
- כתיבת קובץ קטן והרצתו;
- היכרות בסיסית עם debugger ונקודות עצירה.
Visual Studio Code
[עריכה]Visual Studio Code הוא עורך קוד שניתן להרחיב. כדי לעבוד עם פייתון יש להתקין מפרש Python במחשב ואת ההרחבה הרשמית של Python ב-VS Code.
בחירת המפרש
[עריכה]פתחו את לוח הפקודות ובחרו Python: Select Interpreter. בחירה זו חשובה במיוחד כשיש במחשב כמה גרסאות או סביבה וירטואלית.
פתיחת REPL והרצת קוד
[עריכה]אפשר להשתמש באחת הדרכים הבאות:
- לפתוח את לוח הפקודות ולבחור Python: Start Native REPL או Python: Start Terminal REPL;
- לפתוח Terminal פנימי ולהקליד
pythonאוpython3; - לבחור שורה או קטע בעורך ולהשתמש בפקודה Run Selection/Line in Python REPL;
- להריץ קובץ שלם באמצעות Run Python File in Terminal.
אם הפלט שונה מן הצפוי, הריצו בקונסול את sys.executable ובדקו שהמפרש שנבחר הוא אכן מפרש המיזם.
PyCharm
[עריכה]PyCharm היא סביבת פיתוח משולבת המיועדת לפייתון. לכל מיזם מוגדר מפרש, והוא יכול להיות מפרש מערכת, סביבה וירטואלית או סביבה מסוג אחר.
פתיחת הקונסול
[עריכה]בחרו Tools → Python Console. הקונסול מאפשר השלמת קוד, צפייה בהיסטוריה ובדיקת משתנים. אפשר גם לסמן קטע בעורך ולבחור Execute Selection in Python Console.
לפני התקנת חבילה או בדיקת import, בדקו את המפרש שמוגדר למיזם. קונסול של מיזם אחד אינו חייב להשתמש באותו מפרש של מיזם אחר.
קונסול לעומת Run
[עריכה]- Python Console שומר משתנים בין פקודות באותה הפעלה.
- Run מריץ קובץ לפי תצורת ההרצה של המיזם.
- Debug מריץ את הקוד תחת מנפה שגיאות ומאפשר לעצור בשורות שנבחרו.
Spyder
[עריכה]Spyder נפוצה בעבודה מדעית ובניתוח נתונים. הקונסול שלה מבוסס בדרך כלל על IPython ומשולב עם חלונות כגון Variable Explorer ו-Plots.
עבודה בסיסית
[עריכה]- פתחו קונסול חדש מתפריט Consoles.
- הריצו פקודות בשורת הקלט של IPython.
- הריצו קובץ מן העורך באמצעות פקודת Run של Spyder.
- כדי למחוק את המצב שנשמר בזיכרון, השתמשו ב-Restart kernel או פתחו קונסול חדש.
קונסול IPython תומך בפקודות מיוחדות שמתחילות ב-%, אולם אלו אינן פקודות של שפת פייתון עצמה. קוד שאמור לעבוד מחוץ ל-Spyder עדיף לשמור ללא תלות בפקודות מיוחדות כאלה.
Jupyter Notebook, JupyterLab ו-Google Colab
[עריכה]בסביבות מחברת הקוד מחולק לתאים (cells). כל תא נשלח ל-kernel, והמשתנים נשמרים בזיכרון גם לאחר שהתא הסתיים.
# תא ראשון
price = 25
# תא שני
print(price * 2)
התא השני פועל רק אם התא הראשון כבר הורץ באותו kernel. לכן מחברת עלולה להציג תוצאה נכונה גם כאשר מריצים את התאים בסדר שאינו מופיע במסמך.
לפני מסירה או פרסום של מחברת, בצעו Restart Kernel and Run All או פעולה מקבילה. אם כל התאים פועלים מתחילתם ועד סופם, קל יותר לשחזר את התוצאה.
בסביבה מקוונת אין להדביק סיסמאות, אסימוני גישה או מידע אישי בתוך תא קוד. השתמשו במנגנון הסודות של השירות או במשתני סביבה, בהתאם לצורך.
השוואה בין הסביבות
[עריכה]| סביבה | סוג הקונסול | יתרון עיקרי | נקודה שיש לזכור |
|---|---|---|---|
| מסוף המערכת | REPL רגיל | זמין כמעט בכל התקנה ופועל בלי IDE | יש לוודא איזו פקודת Python הופעלה |
| IDLE | Python Shell | פשוטה ומתאימה ללימוד ראשוני | אינה תמיד מותקנת בחבילות Python מינימליות |
| VS Code | Native REPL או Terminal REPL | שילוב גמיש בין עורך, מסוף והרחבות | יש לבחור Interpreter למיזם |
| PyCharm | Python Console | שילוב עם ניתוח קוד, השלמה ו-debugger | כל מיזם עשוי להשתמש בסביבה אחרת |
| Spyder | IPython Console | נוח לנתונים, משתנים וגרפים | ה-kernel שומר מצב עד שמפעילים אותו מחדש |
| Jupyter או Colab | תאים המחוברים ל-kernel | שילוב קוד, טקסט ותוצאות במסמך אחד | סדר הרצת התאים עלול להיות שונה מסדר הופעתם |
ההבדל בין ביטוי לפקודת print
[עריכה]בקונסול אינטראקטיבי, ערכו של ביטוי מוצג אוטומטית:
>>> 10 * 4
40
בקובץ תוכנית, ביטוי לבדו בדרך כלל אינו מוצג. יש להשתמש ב-print:
result = 10 * 4
print(result)
ב-Jupyter גם התא מציג בדרך כלל רק את תוצאת הביטוי האחרון. כדי להציג כמה ערכים באופן ברור, השתמשו ב-print או בפקודת תצוגה מתאימה.
מצב שנשמר בזיכרון
[עריכה]אחת התקלות הנפוצות בקונסול היא שימוש במשתנה שנוצר קודם, אף שהוא אינו מוגדר בקובץ:
>>> tax = 0.17
>>> price = 100
>>> price * (1 + tax)
117.0
אם נשמור בקובץ רק את השורה האחרונה, נקבל NameError. קובץ תקין צריך להגדיר בעצמו את כל המשתנים הדרושים לו או לייבא אותם במפורש.
כאשר התנהגות הקונסול מבלבלת, הפעילו אותו מחדש והריצו את הקוד מתחילתו. ב-IDLE משתמשים ב-Restart Shell; ב-Spyder וב-Jupyter מפעילים מחדש את ה-kernel; ובמסוף רגיל יוצאים מפייתון ונכנסים שוב.
תקלות נפוצות
[עריכה]ModuleNotFoundError למרות שהחבילה הותקנה
[עריכה]סביר שהחבילה הותקנה במפרש אחר. בדקו:
import sys
print(sys.executable)
במסוף המערכת התקינו דרך אותו מפרש:
python -m pip install package_name
בסביבה שבה הפקודה היא python3, השתמשו בהתאמה ב-python3 -m pip.
FileNotFoundError
[עריכה]נתיב יחסי מחושב מתיקיית העבודה הנוכחית, ולא בהכרח מן התיקייה שבה נמצא קובץ הקוד. בדקו:
from pathlib import Path
print(Path.cwd())
print(list(Path.cwd().iterdir()))
הקוד הישן עדיין משפיע על התוצאה
[עריכה]הפעילו מחדש את ה-Shell או את ה-kernel, ואז הריצו את הקוד בסדר הנכון. טעינה חוזרת של קובץ אינה מבטיחה שכל המשתנים הישנים נמחקו.
הקונסול תקוע
[עריכה]ייתכן שהתוכנית מחכה לקלט, נמצאת בלולאה ארוכה או מבצעת פעולה איטית. נסו לעצור בעדינות באמצעות פקודת Interrupt של הסביבה או Ctrl+C. אל תסגרו בכוח לפני שבדקתם אם יש נתונים שטרם נשמרו.
תרגול
[עריכה]תרגיל 1 — זיהוי הסביבה
[עריכה]פתחו שני קונסולים שונים והריצו בכל אחד:
import os
import platform
import sys
print(platform.python_implementation())
print(sys.version)
print(sys.executable)
print(os.getcwd())
השוו בין התוצאות. האם שני הקונסולים משתמשים באותו מפרש ובאותה תיקיית עבודה?
תרגיל 2 — מצב נקי
[עריכה]- הגדירו בקונסול את המשתנה
message = "שלום". - ודאו שהפקודה
print(message)פועלת. - הפעילו מחדש את הקונסול או את ה-kernel.
- נסו שוב את
print(message)והסבירו את התוצאה.
תרגיל 3 — קונסול לעומת קובץ
[עריכה]
נסו את הביטוי 7 ** 2 בקונסול. לאחר מכן שמרו אותו לבדו בקובץ והריצו את הקובץ. תקנו את הקובץ כך שיציג את התוצאה.
result = 7 ** 2
print(result)
מבחן קצר
[עריכה]שאלה 1
[עריכה]מה משמעות REPL?
- א. שמירת קובץ בלבד
- ב. קריאה, חישוב, הדפסה וחזרה להמתנה
- ג. התקנת מערכת הפעלה
- ד. כלי לדחיסת קבצים
שאלה 2
[עריכה]מה מציין בדרך כלל >>>?
- א. שהמפרש ממתין לפקודה
- ב. שהקובץ נמחק
- ג. שחסרה רשת
- ד. שהקוד תמיד תקין
שאלה 3
[עריכה]איזה ערך עוזר לזהות את המפרש הפעיל?
- א.
sys.executable - ב.
str.upper - ג.
list.sort - ד.
math.pi
שאלה 4
[עריכה]מדוע מחברת Jupyter עלולה לפעול בסדר אחד ולהיכשל לאחר Restart and Run All?
- א. התאים יכולים להסתמך על מצב שנוצר בהרצה קודמת
- ב. Jupyter אינה תומכת במשתנים
- ג. כל תא משתמש בשפה אחרת
- ד. פייתון אינה תומכת במחברות
שאלה 5
[עריכה]מהי סיבה נפוצה ל-ModuleNotFoundError בתוך IDE?
- א. נבחר מפרש שונה מזה שבו החבילה הותקנה
- ב. המשתנה הוא מספר
- ג. המסך קטן מדי
- ד. הקוד כולל הערה
שאלה 6
[עריכה]מתי עדיף קובץ .py על קונסול?
- א. כאשר רוצים לשמור, לבדוק ולהריץ שוב תוכנית ארוכה
- ב. כאשר מחשבים ביטוי חד־פעמי קצר בלבד
- ג. כאשר רוצים לבדוק את גרסת Python בלבד
- ד. לעולם לא
- ב — REPL מבצעת Read, Evaluate, Print וחוזרת על הלולאה.
- א — זהו ה-prompt הרגיל של פייתון.
- א —
sys.executableמכיל את נתיב המפרש הפעיל. - א — ה-kernel שומר משתנים ותוצאות בזיכרון בין הרצות.
- א — IDE עשויה להיות מחוברת לסביבה אחרת.
- א — קובץ מתאים לקוד שנדרש לשמור ולשחזר.
סיכום
[עריכה]כל הקונסולים מריצים פייתון, אך הם עשויים להשתמש במפרשים, בתיקיות עבודה ובמצבי זיכרון שונים. כאשר תוצאה אינה צפויה, בדקו תחילה את sys.version, את sys.executable ואת תיקיית העבודה. לניסוי קצר השתמשו בקונסול; לתוכנית שצריכה להיות ניתנת לשמירה, בדיקה ושחזור השתמשו בקובץ.
לקריאה נוספת
[עריכה]- תיעוד IDLE הרשמי
- הרצת פייתון ב-Visual Studio Code
- קונסול פייתון ב-PyCharm
- קונסול IPython ב-Spyder
- שימוש במפרש פייתון