2015-01-01 17:47 GMT+01:00 Martin <lisi...@seznam.cz>: > > Nejdříve odlehčení. Poslední port Pythonu verze 2.3.3. Ukázka jednoduchého > GUI pomocí ESCAPE sekvencí na počítači Amiga (Windows nemá přímou podporu > ESCAPE sekvencí!) > > > > https://www.youtube.com/watch?v=JzN1Fl-T7jw > > > > A teď můj dotaz, stačí mi zodpovědět chování Pythonu verze 2.X v rámci PC. > > > > Zkopíruji to co jsem se ptal jinde: > > > > Takový technický dotaz, co se týče náročnosti na pamět. V rámci Pythonu, tedy > v rámci skriptovacího jazyka. Je pamětově méně náročný, když definuji > proměnnou za IF/ELIF? Nebo se tahle proměnná načte do paměti i když podmínka > IF/ELIF nebude splněna? Na zápis použiji N-tici. > > S IF/ELIF: > if vstup == iso: tabulka = ("A","B"), ("B","C") > elif vstup == latin2: tabulka = ("D","E"), ("F","G") > > Bez IF/ELIF: > iso = ("A","B"), ("B","C") > latin2 = ("D","E"), ("F","G") > > Můj odhad: asi se to načte do paměti i s konstrukcí IF/ELIF, ale program s > konstrukcí IF/ELIF bude o něco méně pamětově náročný, protože nebudu > definovat více proměnných ale jen jednu "tabulka" a možná ani to ne, protože > pokud si to Python potřebuje zapamatovat vše naráz, tak bude mít v paměti > nekolik krát proměnnou "tabulka", dle našeho příkladu 2 krát. Ale dost > filozofie, programování je o nečem jiném, jak to tedy funguje? > > Rěším to, protože každá tabulka by měla obsahovat něco kolem 1800 znaků. > >
Odpovím pro CPython, jiné interpretery jazyka Python se můžou chovat jinak :) Konstantní literály, tedy konstanty zapsané přímo v kódu, jako třeba (("A","B"), ("B","C")) výše, jsou součást zkompilovaného modulu, a do paměti se načtou s ním. Je jedno, jestli se pak použijí nebo nepoužijí. Proměnné v Pythonu jsou jen jména (pro C-čkaře: ukazatele), která se přiřazují hodnotám. Je možnost to dát do zvláštních modulů: if vstup == 'iso': from tabulka_iso import tabulka elif vstup == 'latin2': from tabulka_latin2 import tabulka a v tomhle případě by se načetl jen daný modul a data v něm. Nebo (většinou lepší varianta) se dají data dát do datového souboru a přečíst pomocí `csv` nebo `json` ze std. knihovny. _______________________________________________ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz