פייתון/פייתון גרסה 3/העתקים: הבדלים בין גרסאות בדף

תוכן שנמחק תוכן שנוסף
אין תקציר עריכה
אין תקציר עריכה
שורה 5:
* בכדי לדעת האם מדובר בהעתק עמוק או רדוד נעזר בפונקציית id שמחזירה את "מקום הזיכרון".
 
==פונקצית id==
'''פקודת השמה''' היא דוגמה להעתק רדוד. העותק החדש של המשתנה מצביע בדיוק על אותו מקום בזיכרון :
<source lang = "python">
שורה 36 ⟵ 37:
חשוב לזכור כי טיפוסים בעצמם אינם מחזקים תווים או ערכים אלא הם מצביעים אל כתובת זיכרון עם ערך.
 
==רשימה==
 
העתקים מייצרים העתק רדוד לרשימות כלומר מייצר מצביע לאותה. נראה את הששפעה של העתקים על רשימות :
נשם לב לקריאות הבאות:
<source lang = "python">
>>> num = 2
>>> L = [num] * 3
>>> L
[2, 2, 2]
>>> L[2] = 3
>>> L
[2, 2, 3]
>>></source>
במקרה הראשון יצרנו העתק למספר, איבר שלא ניתן לשנות אותו, בתוך רשימה. כאשר שיננו את המספר ברשימה, התבצעה החלפה של המספר.
 
<source lang = "python">
>>> num = 2
>>> L2 = [[num] ] * 3
>>> L2
[[2], [2], [2]]
>>> L2[1][0] = 10
>>> L2
[[10], [10], [10]]
 
# same to...
>>> nest_lst = [num]
>>> L2 = [nest_lst]*3
>>> L2
[[2], [2], [2]]
>>> L2[1][0] = 9
>>> L2
[[9], [9], [9]]
</source>
במקרה השני יצרנו העתק רדוד לרשימה מקוננת ולכן כאשר שיננו את הרשימה המקוננת (בדוגמה השניה nest_lst) כל הרשימות שהצביעו אליה השתנו.
 
<source lang = "python">
>>> num = 2
>>> L3 = [[num]*4]*2
>>> L3
[[2, 2, 2, 2], [2, 2, 2, 2]]
>>> L3[1][0] = 5
>>> L3
[[5, 2, 2, 2], [5, 2, 2, 2]]
</source>
במקרה השלישי יצרנו תערובת של דוגמא ראשונה ודוגמה שנייה. מצד אחד יצרנו העתקים למספרים ומצד שני מצביעים לרשימות.
 
==רשומה==
 
אם נחדד את החשיבות של העתקים: אנו יכולים לבצע שרשור לדוגמה של רשומה, טיפוס אותו לא ניתן לשנות, מפני שאנו יוצרים העתק רדוד
שורה 43 ⟵ 91:
tpl=tpl+(123,)
print(tpl)
>>>(1, 2, 3, 123)
>>></source>
 
</source>
 
==ההבדל בין אופרטור <code> == </code> לעומת <code> is </code> ==
 
==אופרטור <code> == </code> לעומת <code> is </code> ==
 
<source lang = "python">