בקורס שאנו מעבירים אנו מתמקדים בעובדה שכל ערך מיוצג באמצעות אובייקט כבר בשיעור הראשון. להבנה הזו יש משמעות גדולה מאד להבנת הקוד שרץ.
המשתנים מחזיקים ב-references לאובייקטים
האובייקט הוא מקום בזיכרון שיכול לכלול בתוכו משתנים. הכתובת של האובייקט מוחזקת בטבלה שבה לכל אובייקט מוקדשת שורה אשר כוללת את הכתובת של האובייקט ואת ה-reference שלו. ה-reference הוא מספר בדומה לכתובת. הסיבה להפרדה הזו היא שהאובייקטים מנויידים בזיכרון ממקום למקום תוך כדי ריצת התוכנית כדי שהזיכרון לא ייראה כמו גבינה שוויצרית (גבינה עם חורים) ובדרך זו ה-performance משתפר. ה-references לא משתנים בזמן ריצת התכנית ובכך מתאפשרת החזקתם על ידי משתנים בתכנית.
משתנים שונים יכולים להחזיק באותו reference
כיוון שמשתנים שונים יכולים להחזיק באותו reference, יכולים להיווצר מצבים שבהם פעולה אשר תתבצע באמצעות משתנה מסויים תורגש בפניה למשתנה אחר.
בדוגמת הקוד להלן הפלט יהיה 99. כאשר הקוד להלן רץ נוצר אובייקט אחד מסוג list. שני המשתנים numbers1 ו-numbers2 מחזיקים באותו reference לאובייקט מסוג list אשר נוצר כאשר הקוד רץ. השמת הערך 99 למקום שמספר ה-index שלו הוא 0 בשורה מספר 3 יכולה להיעשות הן באמצעות פניה ל-numbers2 והן באמצעות פניה ל-numbers1 כיוון ששני המשתנים הללו מחזיקים באותו reference לאותו אובייקט.
numbers1 = [12,15,100]
numbers2 = numbers1
numbers2[0] = 99
print(numbers1[0])
במהלך הקורס שאנו מעבירים אנו מתעמקים באופן שבו התכנית רצה לפרטי פרטים. הבנה יסודית של האופן שבו התכנית רצה חיונית להמשך כאשר מתמודדים עם תכניות מורכבות.