פייתון/פייתון גרסה 3/העתקים: הבדלים בין גרסאות בדף
תוכן שנמחק תוכן שנוסף
Mathreturn (שיחה | תרומות) אין תקציר עריכה |
Mathreturn (שיחה | תרומות) אין תקציר עריכה |
||
שורה 1:
'''העתקים''' היא פעולה שמייצרת העתקה של טיפוסים. קיימים שני סוגים של העתקים:
#העתק עמוק (deep copy) - למשתנה המועתק יש '''מיקום''' זיכרון משל עצמו. שינויים שבוצעו על המשתנה לא ישפיעו על המקור.
#העתק רדוד (shadow copy)- המשתנה החדש
* בכדי לדעת האם מדובר בהעתק עמוק או רדוד נעזר בפונקציית id שמחזירה את "מקום הזיכרון". ▼
'''פקודת השמה''' היא דוגמה להעתק רדוד. העותק החדש של המשתנה מצביע בדיוק על אותו מקום בזיכרון :
<source lang = "python">
a=[1,2,3]
x=a
print(id(x))
print(id(a))
x.append(4)
print(a)
>>>2414993751560
>>>2414993751560
>>>[1, 2, 3, 4]
</source>
לעומת זאת הצהרה מייצרת בדיוק את אותו רשימה אך היא נשמרת במקום חדש:
<source lang = "python">
x=[1,2,3]
y=x[:]
print(id(x))
print(id(y))
y.append(1)
print(x)
print(y)
>>>2123513615304
>>>2123477079176
>>>[1, 2, 3]
>>>[1, 2, 3, 1]
</source>
חשוב לזכור כי טיפוסים בעצמם אינם מחזקים תווים או ערכים אלא הם מצביעים אל כתובת זיכרון עם ערך.
▲בכדי לדעת האם מדובר בהעתק עמוק או רדוד נעזר בפונקציית id שמחזירה את "מקום הזיכרון".
<source lang = "python">
|