Middle
Hogyan változik a változtathatóság tulajdonsága, amikor egy módosítható listát beágyazunk egy változatlan objektumba Pythonban?
sobes.tech MI
Válasz az MI-től
Pythonban egy objektum változhatatlansága az objektumra vonatkozik, nem pedig a tartalomra, amelyre hivatkozik. Ha van egy változhatatlan objektumod (például egy tuple), amelyben egy módosítható lista található, akkor magát a tuple-t nem lehet megváltoztatni (például elemek cseréje vagy törlése nem lehetséges), de a belső lista tartalmát módosíthatod.
Ez azt jelenti, hogy egy változhatatlan objektum garantálja, hogy a belső lista hivatkozása nem fog megváltozni, de maga a lista módosítható marad. Ez váratlan viselkedéshez vezethet, ha azt feltételezzük, hogy az egész objektum teljesen változatlan.
Példa:
immutable_tuple = (1, 2, [3, 4])
# Nem lehet megváltoztatni a tuple-t:
# immutable_tuple[0] = 10 # Hiba
# De a belső lista tartalmát módosíthatod:
immutable_tuple[2].append(5)
print(immutable_tuple) # (1, 2, [3, 4, 5])
Így a belső objektumok módosíthatósága megmarad, még akkor is, ha a külső objektum változatlan.