פייתון/פייתון גרסה 2/במקום משתנים - עצמים ושמות

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

עצמים

עריכה

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

בהמשך הקרוב נראה עוד עצמים:

משתנה

עריכה

פייתון מאפשרת לקשר שם לערך מורכב, לדוגמה כך:

>>> a = 2

כעת מקושר השם a למשתנה 2. בכל מקום בו אנו יכולים להשתמש בערך 2, נוכל גם להשתמש בשמו החדש, a. לדוגמה:

>>> a + 3
5
>>> 2 * a + 5
9

השמה של משתנה אחר בתוך משתנה

עריכה

אפשר להשים יותר משם אחד לאותו משתנה. לדוגמה:

>>> a = 2
>>> b = a
>>>b
2

a הוא שם לעצם 2, ו-b הוא שם לעצם של a, כלומר גם כן 2.

הגדרה מחודשת של שם המשתנה

עריכה

לאחר ששם נקשר לעצם, אפשר לקשור אותו לעצם אחר להבדיל ממספרים שנחשבים בלתי ניתנים לשינוי ("immutable data"). השם מפסיק להיות שמו של העצם הקודם, ועובר להיות שמו של העצם הבא. לדוגמה:

>>> a = 2
>>> a = 3
>>> a
3

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

דוגמה: "קידום" שם

עריכה

לאחר הרצת השורות הבאות, מה יהיה ערכו של b?

>>> a = 2
>>> b = a
>>> a = a + 1


הפתרון

נקליד ונבדוק:

>>> b
2

תחילה a הוא שמו של 2, וגם b הוא ערכו של 2. לאחר מכן נהיה a ערכו של 3. הדבר אינו משפיע כלל על השם b.


קישור בו-זמני

עריכה

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

>>> a, b, c = 2, 3, 4

יכולת זו מאפשרת לבצע דברים נחמדים, כמו החלפה בין שמות. לדוגמה:

>>> a = 2
>>> b = 3
>>> a, b = b, a

השורה הראשונה מקשרת בין השם a לעצם 2, השורה השניה מקשרת בין השם b לעצם 3, והשורה השלישית מקשרת בין a ו-b לבין העצמים של השמות b ו-a, ולכן למעשה מחליפה בין השמות. נוכל לבדוק זאת:

>>> a
3
>>> b
2

נדון בכך לעומק כאשר נדבר על n-יות וקישורים.

"משתנים"

עריכה

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

העצם None

עריכה

None הוא עצם מיוחד המציין "כלום". להלן דוגמה אפשרית לשימוש בו

grade = None


# Do some stuff 
...


if grade != None:
	print 'Your grade is', grade
else:
	print 'Your grade is not in the system yet'

שימוש נוסף (וקשור) ב-None הוא בכל מקום בו היינו משתמשים ב-NULL בשפת C וב-NIL בפסקל. הנה דוגמה לקוד המתפעל חוליה של רשימה מקושרת:

l = link()

l.value = 0
l.next = None

מרחב השמות (namespace)

עריכה

פרק זה לוקה בחסר. אתם מוזמנים לתרום לוויקיספר ולהשלים אותו. ראו פירוט בדף השיחה.



קישורים חיצוניים

עריכה


- במקום משתנים - עצמים ושמות -