משתנה הוא שם
משתנה ב-Python הוא שם שמצמידים לערך. כותבים את השם, סימן שוויון ואת הערך:
שלושה משתנים, שלושה ערכים, שלושה טיפוסים. Python מחזיקה אותם זה לצד זה בלי בעיה, ולא הייתם צריכים לספר לה שום דבר על סוגי הערכים. הערך בא אחרי ה-=, והשם בא לפניו.
ברגע שמשתנה קיים, אפשר להשתמש בו בכל מקום שבו הייתם משתמשים בערך עצמו:
השמות הופכים את השורה הלפני אחרונה למתארת את עצמה. זה הרווח האמיתי משמות משתנים טובים: קוד שנקרא כמו הסבר.
השמה היא לא מתמטיקה
דבר אחד שתופס אנשים שמגיעים משיעורי מתמטיקה: = ב-Python הוא לא "שווה". הוא "השמה". פירושו "קח את הערך שאחרי ה-= והצמד אותו לשם שלפניו". Python מעריכה קודם את הערך, ורק אז מבצעת את ההשמה.
אז זה חוקי לגמרי:
השורה count = count + 1 לא טוענת ש-count שווה ל-count ועוד אחד (בלתי אפשרי מתמטית). היא אומרת: חשב את count + 1, ואז השם את התוצאה חזרה ל-count. Python מעריכה קודם את הביטוי, 0 + 1, שנותן 1, ורק אחר כך מעדכנת את המשתנה.
תכתבו count = count + 1 מספיק פעמים כדי של-Python יש קיצור: count += 1 עושה את אותו הדבר.
השמה מחדש משנה את התווית, לא את הערך
משתנה יכול להצביע על ערך אחר בכל רגע שתרצו. הערך הישן לא משתנה: המשתנה פשוט מתחיל להפנות למשהו אחר:
שימו לב לשורה האחרונה. mood מחזיק מחרוזת במשך שתי שורות ואז פתאום מחזיק מספר שלם. Python לא התלוננה. זה טיפוסים דינמיים (dynamic typing): למשתנים אין טיפוס קבוע, רק לערכים יש. הגמישות עוזרת בזמן בניית אב-טיפוס ומכאיבה כשמשתנה משנה משמעות בתוך פונקציה בלי ששמתם לב. ההרגל הבטוח הוא לבחור שם שמתאים למה שהערך מייצג, ואז להשאיר את המשתנה מייצג את הדבר הזה לאורך כל חייו.
הכללים לשמות משתנים
Python מקבלת שמות ש:
- מתחילים באות או בקו תחתון (
_). - מכילים אותיות, ספרות וקווים תחתונים.
- אינם מילת מפתח שמורה (
if,for,class,returnועוד כמה עשרות).
אז אלה תקינים:
ואלה לא:
2nd_user: לא יכול להתחיל בספרה.user-name: מקפים אסורים (Python קוראת אותם כחיסור).class: מילת מפתח שמורה.user name: אין רווחים בשמות.
שמות רגישים לאותיות גדולות וקטנות, כפי שאתם כבר יודעים: total, Total ו-TOTAL הם שלושה משתנים שונים. Python לא תזהה את שגיאת ההקלדה בשבילכם.
מוסכמות שמות
מעבר לכללים המחייבים, לקהילת Python יש מוסכמות: המפרש לא אוכף אותן, אבל הן אוניברסליות בכל האקוסיסטם:
lower_snake_caseלמשתנים ולפונקציות רגילים:retry_count,fetch_profile.UPPER_SNAKE_CASEלקבועים:MAX_RETRIES = 5.PascalCaseלשמות מחלקות (נגיע אליהן בהמשך).- קו תחתון בהתחלה (
_something) הוא רמז לכך שהשם נועד להיות פרטי. לא נאכף, רק מוסכמה. - קו תחתון בסוף (
class_) מאפשר להשתמש בשם שאחרת היה מתנגש עם מילת מפתח.
היצמדו לאלה, והקוד שלכם ייראה כמו ה-Python שאנשים אחרים כתבו.
שמות צריכים לתאר משמעות
שם משתנה לא עולה כלום להקלדה, אבל יקר לקריאה. השקעה של כמה תווים נוספים בבחירת שם שבאמת מתאר מה הערך אומר חוסכת לקוראים עתידיים (בדרך כלל אתם בעתיד) הרבה מאמץ.
השוו:
אותו קוד, אותה תשובה, אבל רק הגרסה השנייה אומרת לכם מה קורה. שמות קצרים (i, n, x) בסדר בטווחים קטנים מאוד כמו מונים של לולאות, אבל מחוץ להם, כתבו את השמות במלואם.
השמה מרובה (במשורה)
Python מאפשרת להשים את אותו ערך לכמה משתנים בשורה אחת:
או לפרוס כמה ערכים בבת אחת:
שתי הצורות בסדר כשהן הופכות את הקוד לברור יותר (כמו פריסת הערך המוחזר מפונקציה). הצורה הראשונה, השרשרת = = =, דורשת רגע של זהירות: שלושת המשתנים מפנים בסוף ל_אותו אובייקט_, וזה משנה בטיפוסים שניתנים לשינוי כמו רשימות (עוד על כך בהמשך).
מה לקחת מכאן
name = valueיוצר משתנה.- למשתנים אין טיפוסים, לערכים יש.
- שמות כפופים לכמה כללים מחייבים ולהרבה מוסכמות רכות, וכדאי לכבד את שניהם.
- שם תיאורי הוא צורת התיעוד הזולה ביותר.
הבא בתור: אילו סוגי ערכים Python תומכת בהם בפועל: מספרים שלמים, floats, מחרוזות, בוליאנים, ולמה עוזר לדעת מה זה מה.
שאלות נפוצות
איך יוצרים משתנה ב-Python?
בוחרים שם, שמים אחריו =, ואחרי ה-= כותבים ערך. age = 30 יוצר משתנה בשם age עם הערך 30. Python מבינה את הטיפוס אוטומטית, ולא צריך להצהיר עליו.
מהם הכללים לשמות משתנים ב-Python?
שם יכול להכיל אותיות, ספרות וקווים תחתונים, אבל לא יכול להתחיל בספרה. הוא לא יכול להיות מילת מפתח של Python כמו if או class. שמות רגישים לאותיות גדולות וקטנות: total, Total ו-TOTAL הם שלושה משתנים שונים. המוסכמה בקהילה היא lower_snake_case.
האם משתנה ב-Python יכול לשנות טיפוס?
כן. Python היא שפה עם טיפוסים דינמיים, כך שמשתנה שמחזיק מספר ברגע אחד יכול להחזיק מחרוזת ברגע הבא. הגמישות הזו נוחה אבל יכולה להפתיע: אם המשמעות של משתנה משתנה באמצע פונקציה, זה בדרך כלל סימן לבחור שם חדש.