Re: [python] Jaký Tkinter? GTK? QT? Coooo Amiga Escape sekvence rulez! Odlehčení a dotaz - Python a pamět? ;)
2015-01-01 17:47 GMT+01:00 Martin : > > 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
[python] Jaký Tkinter? GTK? QT? Coooo Amiga Escape sekvence rulez! Odlehčení a dotaz - Python a pamět? ;)
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 (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ů. Díky za pomoc! :) Lisiak4 ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz
Re: [python] Python 3 a další druhy (TkinterPython, ...)
Někdo přede mnou doporučoval začít konzolovou aplikací. Také jsem tak postupoval. Ale následně jsem chtěl některé programy (jejich vnitřky) použít jako knihovny do větších programů, nebo dokonce pod GUI. A musel jsem dost přepisovat: Například když původní funkce narazila na neřešitelný problém, tak prostě ukončila program. Správné je vyvolání výjimky. Nebo se vykecávala pomocí print-u - to v GUI není ono. Teď to řeším pomocí 'yield'. A ještě jedna legrace okolo aplikací na příkazovou řádku pod windows - kódování. Výstup na stdout musí být v cp852, ale když ho přesměrujete rourou do souboru, tak je rozumnější cp1250. Pokud chcete mít univerzální program (i do linuxu) tak ještě iso8895-2, nebo (dnes už jen) utf8. Ale to jsou moje problémy/chyby a ne vlastnosti Pythonu. ZU Dne 1.1.2015 v 17:10 Daniel Hubáček napsal(a): Díky za rady... Snad se to nějak povede :D ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz
Re: [python] Python 3 a další druhy (TkinterPython, ...)
Díky za rady... Snad se to nějak povede :D ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz
Re: [python] Python 3 a další druhy (TkinterPython, ...)
On 2014-12-31, 22:00 GMT, Daniel Hubáček wrote: > stále tomu moc nerozumím, takže se mám naučit Python, jako > základ, a pak se poohlídnout která knihovna je nejvhodnější? Přesně tak. Stejně bych radil nejprve napsat aplikaci, kterou chcete napsat jako jednoduchý skript běžící z příkazové řádky (hlavní žádné aplikace není být GUI, GUI je jenom přívětivá tvář pro nějakou činnost, kterou ta aplikace dělá), a ve chvíli kdy pochopíte skutečně co se děje a budete mít svoje algoritmy, data, objekty, atp. uspořádané, můžete program předělat aby byl GUI. Rozložíte si učení se dvou poměrně rozdílných (a komplikovaných) oblastí do dvou kroků, místo abyste se utopil v tom všem zmixovaném do jedné hroudy. Hezký nový rok! Matěj ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz