בכל תכנית שאנו כותבים עלינו להשתמש במידע, בין אם זה מידע שנקלט מהמשתמשים שלנו או מידע שחישבנו ואנו מעוניינים להציגו או להעביר אותו לתכנית אחרת. משתנים מאפשרים לנו לאחסן באופן זמני את המידע הזה ולפנות אליו בעת הצורך ולכן הם הדבר הבסיסי והחשוב ביותר בכל שפת תכנות. פייתון לא שונה במובן הזה ועבודה עם משתנים בפייתון היא פשוטה מאין כמוה ביחס לשפות אחרות – אין צורך להצהיר על משתנים וגם לא להגדיר את הסוג שלהם.
הגדרת משתנה מתבצעת פשוט ע"י אתחולinitialization) ) של שם המשתנה לערך מסוים. השם יכול להיות כל דבר שנרצה כל עוד הוא מתחיל באות (אנגלית) או קו תחתון, ומכיל רק מספרים, אותיות וקווים תחתונים. כמוסכמה, שמות משתנים תמיד יכילו אותיות קטנות בלבד אבל אתם יכולים לכלול גם אותיות גדולות אם אתם רוצים. ההצבה עצמה מתבצעת ע"י הסימן '=' (לא לבלבל עם '==' שמציין השוואה)
number = 100
בדוגמה הזאת אנחנו מבקשים להציב את הערך 100 במשתנה בשם number. מאחורי הקלעים פייתון מאחסנת את הערך 100 בזיכרון ויוצרת מצביע (pointer) אליו בשם number. מעכשיו כשנרצה לגשת אל הערך ששמרנו נוכל להשתמש במצביע שיצרנו.
number = 100
print(number)
100
ניתן גם לעשות חישובים על המשתנה והתוצאה תהיה זהה למקרה שבו היינו מבצעים את החישובים על הערך עצמו
number = 100
print(number * 5)
500
ניתן לעשות חישוב של משתנה על עצמו.
number = 100
print(number + number)
200
עבודה עם מחרוזות תתבצע באותה צורה
name = 'Johnny'
print(name)
Johnny
במקרה של חיבור משתנים המכילים טקסט, יתבצע שרשור כמו שכבר ראינו עם מחרוזות רגילות
name = "Johnny!"
word = "Here's"
print(word + ' ' + name)
Here's Johnny!
החישוב החשבוני היחיד שניתן לעשות על מחרוזות הוא הכפלה
name = "Johnny!"
print(name * 5)
Johnny!Johnny!Johnny!Johnny!Johnny!
ניתן להגדיר מספר ערכים למספר משתנים בהצהרה יחידה
a,b,c = 2,3,4
ולבצע חישובים על משתנים מרובים באותה הצהרה. ניתן גם להכניס את התוצאה של חישוב לתוך משתנה נוסף.
a,b,c = 2,3,4
total = a * b * c
print(total)
24
אין הגבלה על כמות הפעמים שבה משתנה יכול להופיע בחישובים שאנחנו מבצעים
a,b,c = 2,3,4
total = (a + b) - c * a + b
print(total)
0
פעולה נוספת שניתן לעשות, היא לעדכן ערך של משתנה באמצעות חישוב על עצמו. הפעולה הזאת הרבה יותר נפוצה ממה שהיא נשמעת, אני אדגים בהמשך המדריך על שימוש בקונספט הזה. בדוגמה הבאה נגדיר משתנה שיצביע לערך 100 ואז נעדכן אותו לערך הגדול פי 2 מערכו המקורי
num = 100
num = num * 2
print(num)
200
משתנים יכולים גם להכיל ערכים בוליאניים – True / False. אפשר להציב את הערכים האלה במשתנים באופן מפורש
booli_var = True
print(booli_var)
True
והם יכולים להכיל את הפלט של ביטוי בוליאני
booli_var = 2 == 5
print(booli_var)
False
בדוגמה האחרונה הגדרנו ביטוי שאינו נכון (2 אינו שווה ל-5) ולכן המשתנה ש"קיבל" את התוצאה למעשה מצביע לערך False.
כמו שכתבתי בתחילת המאמר, משתנים לא "מכילים" ערכים בעצמם אלא מצביעים לערכים שמאוחסנים בזיכרון. זאת הסיבה שכל כך קל להגדיר משתנים בפייתון. אין צורך להגדיר סוג כי למשתנה אין סוג – הוא פשוט מצביע לערך מסוג מסוים. לכן הצבה מחודשת של ערך בתוך משתנה היא לא יותר מאשר הזזת ההצבעה לערך אחר. בגלל העיקרון הזה כל משתנה יכול להכיל כל סוג וגם להחליף סוגי מידע שונים ללא שום בעיה
num = 100
num = "I'm not a number!"
print(num)
I'm not a number!
ניתן גם לשייך ערכים ממשתנים למשתנים אחרים
number = 100
anotherNumber = number
print(number)
print(anotherNumber)
100
100
ע"י הצבה של משתנה במשתנה אחר יצרנו שני משתנים המצביעים לאותו ערך. אם נשנה את הערך שאליו מצביע המשתנה הראשון, המשתנה השני לא ישתנה כתוצאה מכך, הוא עדיין מצביע לערך המקורי ולא אל המשתנה הראשון.
number = 100
anotherNumber = number
number = 999
print(number)
print(anotherNumber)
999
100
בכל תכנית שאנו כותבים עלינו להשתמש במידע, בין אם זה מידע שנקלט מהמשתמשים שלנו או מידע שחישבנו ואנו מעוניינים להציגו או להעביר אותו לתכנית אחרת. משתנים מאפשרים לנו לאחסן באופן זמני את המידע הזה ולפנות אליו בעת הצורך ולכן הם הדבר הבסיסי והחשוב ביותר בכל שפת תכנות. פייתון לא שונה במובן הזה ועבודה עם משתנים בפייתון היא פשוטה מאין כמוה ביחס לשפות אחרות – אין צורך להצהיר על משתנים וגם לא להגדיר את הסוג שלהם.
הגדרת משתנה מתבצעת פשוט ע"י אתחולinitialization) ) של שם המשתנה לערך מסוים. השם יכול להיות כל דבר שנרצה כל עוד הוא מתחיל באות (אנגלית) או קו תחתון, ומכיל רק מספרים, אותיות וקווים תחתונים. כמוסכמה, שמות משתנים תמיד יכילו אותיות קטנות בלבד אבל אתם יכולים לכלול גם אותיות גדולות אם אתם רוצים. ההצבה עצמה מתבצעת ע"י הסימן '=' (לא לבלבל עם '==' שמציין השוואה)
number = 100
בדוגמה הזאת אנחנו מבקשים להציב את הערך 100 במשתנה בשם number. מאחורי הקלעים פייתון מאחסנת את הערך 100 בזיכרון ויוצרת מצביע (pointer) אליו בשם number. מעכשיו כשנרצה לגשת אל הערך ששמרנו נוכל להשתמש במצביע שיצרנו.
number = 100
print(number)
100
ניתן גם לעשות חישובים על המשתנה והתוצאה תהיה זהה למקרה שבו היינו מבצעים את החישובים על הערך עצמו
number = 100
print(number * 5)
500
ניתן לעשות חישוב של משתנה על עצמו.
number = 100
print(number + number)
200
עבודה עם מחרוזות תתבצע באותה צורה
name = 'Johnny'
print(name)
Johnny
במקרה של חיבור משתנים המכילים טקסט, יתבצע שרשור כמו שכבר ראינו עם מחרוזות רגילות
name = "Johnny!"
word = "Here's"
print(word + ' ' + name)
Here's Johnny!
החישוב החשבוני היחיד שניתן לעשות על מחרוזות הוא הכפלה
name = "Johnny!"
print(name * 5)
Johnny!Johnny!Johnny!Johnny!Johnny!
ניתן להגדיר מספר ערכים למספר משתנים בהצהרה יחידה
a,b,c = 2,3,4
ולבצע חישובים על משתנים מרובים באותה הצהרה. ניתן גם להכניס את התוצאה של חישוב לתוך משתנה נוסף.
a,b,c = 2,3,4
total = a * b * c
print(total)
24
אין הגבלה על כמות הפעמים שבה משתנה יכול להופיע בחישובים שאנחנו מבצעים
a,b,c = 2,3,4
total = (a + b) - c * a + b
print(total)
0
פעולה נוספת שניתן לעשות, היא לעדכן ערך של משתנה באמצעות חישוב על עצמו. הפעולה הזאת הרבה יותר נפוצה ממה שהיא נשמעת, אני אדגים בהמשך המדריך על שימוש בקונספט הזה. בדוגמה הבאה נגדיר משתנה שיצביע לערך 100 ואז נעדכן אותו לערך הגדול פי 2 מערכו המקורי
num = 100
num = num * 2
print(num)
200
משתנים יכולים גם להכיל ערכים בוליאניים – True / False. אפשר להציב את הערכים האלה במשתנים באופן מפורש
booli_var = True
print(booli_var)
True
והם יכולים להכיל את הפלט של ביטוי בוליאני
booli_var = 2 == 5
print(booli_var)
False
בדוגמה האחרונה הגדרנו ביטוי שאינו נכון (2 אינו שווה ל-5) ולכן המשתנה ש"קיבל" את התוצאה למעשה מצביע לערך False.
כמו שכתבתי בתחילת המאמר, משתנים לא "מכילים" ערכים בעצמם אלא מצביעים לערכים שמאוחסנים בזיכרון. זאת הסיבה שכל כך קל להגדיר משתנים בפייתון. אין צורך להגדיר סוג כי למשתנה אין סוג – הוא פשוט מצביע לערך מסוג מסוים. לכן הצבה מחודשת של ערך בתוך משתנה היא לא יותר מאשר הזזת ההצבעה לערך אחר. בגלל העיקרון הזה כל משתנה יכול להכיל כל סוג וגם להחליף סוגי מידע שונים ללא שום בעיה
num = 100
num = "I'm not a number!"
print(num)
I'm not a number!
ניתן גם לשייך ערכים ממשתנים למשתנים אחרים
number = 100
anotherNumber = number
print(number)
print(anotherNumber)
100
100
ע"י הצבה של משתנה במשתנה אחר יצרנו שני משתנים המצביעים לאותו ערך. אם נשנה את הערך שאליו מצביע המשתנה הראשון, המשתנה השני לא ישתנה כתוצאה מכך, הוא עדיין מצביע לערך המקורי ולא אל המשתנה הראשון.
number = 100
anotherNumber = number
number = 999
print(number)
print(anotherNumber)
999
100
הודעתך לא התקבלה - נסה שוב מאוחר יותר
Oops! Something went wrong while submitting the form