přihlásit 5973/813938

Měnitelné a neměnitelné datové typy

Datové typy v Pythonu můžeme rozdělit na dvě hlavní kategorie. Na datové typy měnitelné (mutable) a neměnitelné (immutable).

Liší se jedinou vlastností a to možností měnit hodnotu instance datového typu (konkrétního datového objektu v paměti počítače). Měnitelné datové typy ji měnit mohou, neměnitelné nemohou. U těch neměnitelných je tedy datový objekt vzniklý v paměti stejný po celou dobu jeho životnosti (do odstranění z paměti).

Výhodou neměnitelných datových typů je, že je můžeme bezpečně sdílet mezi proměnnými. Například mám-li seznam (pole) o sto prvcích plný nul datového typu int, pak se každý prvek seznamu odkazuje na datový objekt představující nulu. Díky tomu, že nula má datový typ int, který je neměnitelný, mohou se všechny prvky odkazovat na jeden datový objekt představující nulu (sdílet jej) a nemusím ho mít v paměti stokrát. Tím významně šetřím paměť.

Kdyby datový typ int byl měnitelný, tak bych mohl datovému objektu, který představuje nulu, změnit hodnotu, a on by najednou představoval třeba číslo deset. Kdyby všechny prvky seznamu sdílely takovýto objekt, tak by se změnou hodnoty jednoho prvku seznamu změnily hodnoty všech jeho prvků. To je důvod, proč měnitelné prvky nemůžeme sdílet.

Zrovna tak ale nechceme, aby byly neměnitelné všechny datové typy. Například onen seznam. U něho chceme, aby byl měnitelný, a mohli jsme tak měnit jeho jednotlivé položky. Kdyby byl seznam neměnitelný datový typ, museli bychom v případě potřeby změny jedné jeho položky vytvořit kopii takového seznamu, kde by ta jedna položka byla změněna. Starý seznam bychom pak zahodili. To je sice možné chování, ale je neefektivní, stálo by nás to hodně paměti a výkonu počítače. Lepší je, když změnu provedeme v již existujícím seznamu.

Jak je vidět, měnitelnost i neměnitelnost má své výhody. Jednou je výhodné to a podruhé ono, podle situace. Neměnitelnost datových typů je pro nás výhodná u jednoduchých datových objektů, kterých je v programu hodně a mají často stejnou hodnotu. Například u čísel. Měnitelnost datových typů je pro nás výhodná u velkých (složených) datových typů, jejichž obsah se často mění.

Neměnitelné datové typy jsou:

Měnitelné datové typy jsou:

Tato vlastnost datových typů velmi úzce souvisí s proměnnými, takže si možná teď budete chtít přečíst kapitolu o proměnných.


Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /web/htdocs2/wraithcz/home/www/python/data/sessions/sessions1.php on line 2