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

מתוך testwiki
קפיצה לניווט קפיצה לחיפוש

תבנית:פייתון/פייתון גרסה 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. כאשר אנו רושמים את שם המשתנה מתקבל ההגדרה ההאחרונה של המשתנה דהינו a=3 כלומר הגדרה מחודשת של משתנה מוחקת את הקודמת ומייצרת הגדרה חדשה. אפשר לחזור על כך מספר בלתי מוגבל של פעמים ולהחליף את ערכו של המשתנה בין טיפוסים שונים.

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

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

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


תבנית:מוסתר

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

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

>>> 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

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

grade = None


# Do some stuff 
...


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

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

l = link()

l.value = 0
l.next = None

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

תבנית:להשלים

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


תבנית:פייתון/פייתון גרסה 2