Mutable och Immutable datatyper i Python

En datatyp har egenskapen mutable eller immutable (föränderlig eller 0föränderlig). Det innebär att vissa datatyper kan förändras efter skapandet, medans andra inte kan. 

Vad innebär det att en datatyp är mutable eller immutable? 

En mutable (förändlig) datatyp är möjlig att ändra på efter initieringen medans en immutable (oförändling) datatyp inte går att ändra på.

Några exempel på datatyper som är mutable är:

  • Sets
  • Listor
  • Dictionaries

och några exempel på datatyper som är immutable är:

  • Int
  • Booleans
  • String
  • Tuple
  • Float

Varje variabel har en minnesadress, som är ett sätt för datorn att lagra data för senare åtkomst.
Exempelvis om vi definerar en int, som är en immutable datatyp:

så har den adressen

0x10daa2680 

Definerar vi sedan en till variabel med samma värde, kommer denna variabel att få samma minnesadress:

0x10daa2680 

Eftersom ints är immutable, kan inte denna adressen ändras, vilket innebär att om vi ändrar värde på variabeln, kommer också adressen ändras:

0x10daa26c0

Men detta beteende kommer inte vara samma för en mutable datatyp. Ta exempelvis listor, som är mutable:

0x10ffcc4c8
0x10ffcc4c8

I detta fall delar a och b samma minnesadress. Detta innebär att om ett värde ändras i a, kommer även värdet ändras i b:

[1, 2, 3, 10, 5]
[1, 2, 3, 10, 5]
0x10ffcc4c8
0x10ffcc4c8

Eftersom a och b delar samma minnesadress, innebär det att om ett värde ändras i a, kommer det även ändras i b! Observera alltså att minnesadressen är samma som före ändringen för mutable datatyper.

Bakåt    |    Framåt