hozzárendelés vs. sekély másolás vs. mély másolás Python


sekély másolás

egy sekély másolat új összetett objektumot épít ki, majd (a lehető legnagyobb mértékben) beilleszti a hivatkozásokat az eredetiben található objektumokra.

három különböző módon lehet létrehozni egy sekély másolás:

Itt a fenti lista tartalmazza az azonos értékek, mint az eredeti lista:

>>> print(nums == m1 == m2 == m3)
True

Azonban a memória cím minden más.,

Ez azt jelenti, hogy ezúttal minden lista objektumának saját, független memóriacíme van.

most az érdekesebb részre költözünk. Ha az eredeti lista összetett objektum (pl. listák listája), akkor egy sekély másolat után az új listaelemek továbbra is hivatkoznak az eredeti elemekre.

tehát, ha módosítja a módosítható elemeket, például a listákat, a változások tükröződnek az eredeti elemeken., Nézzük meg az alábbi példát, hogy jobban megértsük:

a fenti példában, miközben módosítása a belső lista elemek az új lista frissül az eredeti lista is, mert a vagy b még mindig pont ugyanolyan memória cím (eredeti lista).

tehát az új lista b saját memóriacíme van, de elemei nem., Ennek oka az, hogy a sekély másolatban ahelyett, hogy a lista elemeit az új objektumra másolná, egyszerűen átmásolja a memóriacímekre való hivatkozásokat.

ezért, miközben módosítjuk az eredeti objektumot, ez tükröződik a másolt objektumokban, és fordítva.

Ez egy sekély példány jellemzője.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük

Tovább az eszköztárra