עבודה עם משתנים ב-Python

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

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

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

ניתן גם לעשות חישובים על המשתנה והתוצאה תהיה זהה למקרה שבו היינו מבצעים את החישובים על הערך עצמו

ניתן לעשות חישוב של משתנה על עצמו.

עבודה עם מחרוזות תתבצע באותה צורה

במקרה של חיבור משתנים המכילים טקסט, יתבצע שרשור כמו שכבר ראינו עם מחרוזות רגילות

החישוב החשבוני היחיד שניתן לעשות על מחרוזות הוא הכפלה

ניתן להגדיר מספר ערכים למספר משתנים בהצהרה יחידה

ולבצע חישובים על משתנים מרובים באותה הצהרה. ניתן גם להכניס את התוצאה של חישוב לתוך משתנה נוסף.

אין הגבלה על כמות הפעמים שבה משתנה יכול להופיע בחישובים שאנחנו מבצעים

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

משתנים יכולים גם להכיל ערכים בוליאניים – True / False. אפשר להציב את הערכים האלה במשתנים באופן מפורש

והם יכולים להכיל את הפלט של ביטוי בוליאני

בדוגמה האחרונה הגדרנו ביטוי שאינו נכון (2 אינו שווה ל-5) ולכן המשתנה ש"קיבל" את התוצאה למעשה מצביע לערך False.

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

ניתן גם לשייך ערכים ממשתנים למשתנים אחרים

ע"י הצבה של משתנה במשתנה אחר יצרנו שני משתנים המצביעים לאותו ערך. אם נשנה את הערך שאליו מצביע המשתנה הראשון, המשתנה השני לא ישתנה כתוצאה מכך, הוא עדיין מצביע לערך המקורי ולא אל המשתנה הראשון.