Mikuláš je tu! Získaj 90 % extra kreditov ZADARMO s promo kódom CERTIK90 pri nákupe od 1 199 kreditov. Len do nedele 7. 12. 2025! Zisti viac:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

Diskusia – 7. diel - Odkazy na objekty a Garbage collector v Pythone

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Posledné komentáre sú na spodnej časti poslednej stránky.
Avatar
Pavel Buřič :22. júla 13:27

naprosto dle meho o nicem vysvetleni. zacatecnikum toto maximalne zamota hlavu

Avatar
Michaela Zahradníková:7. septembra 14:10

Viac mi to zamotalo hlavu, nerozumiem tomu. Je to komplikovane napísané

Avatar
Jan Kupčík
Člen
Avatar
Jan Kupčík:26. novembra 9:43

None mohlo být vysvětleno dříve jak psal Pavel Kohl, protože byl použit v bonusovém příkladu pro 4 - 6 lekci pokud se nepletu.

Malá chyba v textu:

Zapnutí a vypnutí GC můžeme dokonce "z" kódu ovlivnit, i když to není v 99 % případů vůbec potřeba.

Avatar
DarkCoder
Člen
Avatar
DarkCoder:26. novembra 12:11

Aplikace (resp. její vlákno) má operačním systémem přidělenou paměť v podobě tzv. zásobníku (stack). Jedná se o velmi rychlou paměť s přímým přístupem. Její velikost aplikace nemůže ovlivnit, protože prostředky jsou přidělovány operačním systémem.

Tohle platí pro C nebo C++, ale ne úplně pro Python. Python program skutečně používá stack, ale je to stack interpretu, ne stack systémového vlákna. Na tento stack se ukládají:

návratové adresy, ukazatele na rámce (frames), reference na objekty (ne objekty samotné)

Velikost stacku jde v CPythonu dokonce měnit (sys.setrecur­sionlimit()).
A u vláken také nastavením velikosti thread stacku přes threading.stac­k_size().

Všechny Python objekty (int, list, dict, instance tříd …) se ukládají na heap, který spravuje Pythonův alokátor paměti.

u = Uzivatel("Jan Novák", 28)

Heap

vytvoří se objekt Uzivatel
vytvoří se řetězec "Jan Novák"
vytvoří se integer 28

Stack

proměnná u (přesněji: lokální název „u“)
obsahuje pouze referenci (pointer) na objekt uložený na heapu

Tedy to že objekt je v paměti nadvakrát není úplně přesné. Ale z výše uvedeného lze určit jak to autor myslel.

Že stack je omezený není hlavním důvodem proč Python používá reference místo kopií. Hlavním důvodem je rychlost a šetření pamětí.

Odpovedať
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Posledné komentáre sú na spodnej časti poslednej stránky.
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 4 správy z 44.