ukotvit menu |
Zde použitá terminologie a rozdělení datových typů je moje vlastní a nemusí odpovídat žádné učebnici nebo teorii programování.
Datový typ je obecně druh dat, který jazyk zná a s kterým umí přímo pracovat. Základní datové typy vychází z možností hardware a jsou určeny paměťovou náročností (kolik bajtů zabírají v paměti) a významem bitů v nich obsažených. Například datový typ char (znak) zabírá 1 bajt, to je 8 bitů a tedy může vyjádřit 256 různých hodnot.
Bit je nejmenší jednotka informace, nabývá hodnot 1 nebo 0, tedy dva stavy. Pomocí dvou bitů dovedeme vyjádřit už čtyři stavy 00 01 10 11. Pomocí osmi bitů pak 2^8 (dva na osmou) stavů, což je 256. Jeden bajt je základní paměťová jednotka (lze adresovat), s kterou pracují současné počítače.
Jsou známy dva druhy charů, signed (se znaménkem) a unsigned (bez znaménka). Signed char je číslo které může nabýt hodnot -128 až 127, unsigned char je číslo, které může nabýt hodnot 0 až 255. To znamená, že stejné uspořádání bitů jednoho bajtu v paměti může představovat jiné číslo, podle toho, jestli si o něm myslíme, že má datový typ signed nebo unsigned char. Skvělá příležitost pro dělání chyb v programech. Takovýchto základních datových typů je definována celá řada, ale ne každý jazyk podporuje všechny.
Kromě základních datových typů existují i komplexnější abstraktní datové typy. Ty nejsou určeny potřebami hardware, ale potřebami programátorů. Umožňují abstrakci dat (zjednodušený pohled na data), což je nezbytné pro psaní větších programů, protože lidský mozek je schopen řešit úlohy jen do určité míry složitosti. Jednoduchým příkladem abstrakce dat budiž datový typ bod, který se skládá ze dvou čísel (souřadnic) a který může programátor používat při programování grafiky.
Je jasné, že abstrakce dat podléhá potřebám té či oné úlohy a tedy je individuální, každý programátor potřebuje jiné abstraktní datové typy. Proto lepší jazyky programátorovi umožňuje definovat si vlastní, neboli uživatelské datové typy. Například v jazyce C k tomu slouží příkaz typedef. Potřeba ještě větší abstrakce ve velkých programech pak vedla ke vzniku objektově orientovaného programování, kde se k tomuto účelu používají třídy, jenž umožňují k datům připojit i metody, které tyto data zpracovávají. Objektově orientované programování podporuje i Python.
Na konec ještě existují vyšší datové typy. Tyto datové typy umožňují progamovacímu jazyku pracovat s jeho vlastními prvky (jako jsou třeba funkce nebo třídy) jako s daty. Například zacházet s třídou jako proměnnou a za běhu programu ji modifikovat. Vyšší datové typy jsou vlastní dynamickým jazykům jako je Python. V statických jazycích jako je C nebo C# nejsou k dispozici.
Python je jazyk vyšší úrovně (high level language). To znamená, že programátorům poskytuje větší odstínění od hardware, tj. zjednodušenné základní typy, připravené obecné abstraktní typy a protože vše, včetně funkcí a tříd, je v něm objekt, tak i vyšší datové typy.
Základní datové typy které Python poskytuje:
název | C ekvivalent | popis |
---|---|---|
int | signed int | Celé číslo se znaménkem. Minimálně 32 bitů, na 64 bit. procesorech může být větší. |
float | double | Desetinné číslo s dvojitou přesností. Jednoduchá přesnost v Pythonu není podporována. |
Není to mnoho, to je v souladu s tím, že Python je jazyk vyšší úrovně. Není třeba se ale obávat potíží při práci s binárními daty, tedy komunikace s programy napsanými v jazycích nižší úrovně. Za tímto účelem má Python modul struct, který např. umožňuje jednoduše zpracovat všechny C datové typy (převést je snadno na svoje vlastní datové typy).
Abstraktní datové typy zabudované přímo v jazyku (nemají ekvivalent v C):
název | popis |
---|---|
NoneType | Speciální typ s jedinou hodnotou None. |
bool | Speciální typ s hodnotami True a False. |
long | celé číslo neomezené velikosti (není to to samé, co long v C) |
complex | komplexní číslo |
str | text v 8. bitovém kódování |
unicode | text v kódování unicode |
list | seznam (pole s metodami pro práci s jeho prvky), lze např. používat i jako zásobník FIFO nebo FILO |
tuple | nemodifikovatelná varinata seznamu |
dict | slovník (datový typ známý i pod názvy hash, asociativní pole) |
file | otevřený soubor (jazyk C má neekvivalentní strukturu pro práci se soubory v knihovně stdio.h) |
Vyšší a vnitřní datové typy jsou uvedeny v referenční příručce. Je to vyšší dívčí, kterou se začátečníci nemusí zabývat a docela dobře se bez toho obejdou.