V Fri, 4 Mar 2011 19:42:34 +0100 Hynek Fabian <hynek.fab...@firma.seznam.cz> napsáno:
> Pokud si chces nechat poradit, pak je to samozrejme jina. > > 1) exec nepotrebujes na zmenu lokalnich promenych. To cemu rikas > "promenne" jsou ve skutecnosti jen jmena ve jmennych prostorech, v > podstate obycejne slovniky. A na zmenu slovniku existuji lepsi > zpusoby, vime? Ted uz ano. > V nejjednodussi verzi by tedy stacilo obalit > pozadovanou funkcnost do funkce nebo metody ktera vrati slovnik. > Potom staci neco ve stylu: > > locals().update(othervariables) > > Vraceny slovnik muzes predem zkontrolovat na pricetnost (jenom kafe), > doplnit jmenum nejaky unikatni prefix... fantazii se meze nekladou. > Uplne stejne muzes presypat promene do instance, tridy nebo modulu do > atributu __dict__. Dokonce bys mel, protoze narozdil od znasilnovani > locals() je to z hlediska interpretru legalni. asi me zmatla syntaxe toho exec s globals(),locals() natolik ze pouzivani stylu self.__dict__['kafe'] v ramci tridy se mi uplne vykourilo z hlavy. jestli ted teda oba myslime na stejnou vec. > > 2) exec nepotrebujes na pristup k promenlivym strukturam. Pokud mas > nejakou 'freeform' strukturu, (dejmetomu strom uzlu v xml dokumentu) > a chces predat 'cestu; k nejakemu uzlu ktery urcis az za behu, > nemusis se matlat s generovanim syntakticky spravneho textu programu > pro exec ("rootnode.node[n].childnode[attr]"), ale proste si onu > cestu vyjadris jako funkci: > > worknode = lambda x: x.node[n].childnode[attr] > > Muzes se samozrejme odkazovat na lokalni promenne cimz vznikne > klasicka uzavera (closure). Takovou funkci (nemusi byt v lamda forme, > ale vetsinou je tak citelnejsi) muzes predat dal jako jakykoliv jiny > objekt. > > > 3) exec nepotrebujes k dynamickemu nacteni modularniho kodu, na to je > mnohem lepsi builtin __import__, ktery importovany kod zaroven opatri > vlastnim jmennym prostorem a vubec klasickym komfortem. Konkretni > pouziti zavisi na tom ceho chces vlatne dosahnout. Tak toto je treba pro me nove > > Zapomel jsem na neco? Myslim ze ne diky. > > > Martin B. (Friday 04 of March 2011 12:48:56): > > V Fri, 4 Mar 2011 12:00:58 +0100 > > > > Hynek Fabian <hynek.fab...@firma.seznam.cz> napsáno: > > > > Nechci rozebirat jestli je to dobre nebo ne ale proste to tak > > > > potrebuju. > > > > > > Jsi pitomec. Nechci rozebirat jestli je to fer nebo ne ale proste > > > to tak je. > > > > Oops, Tvuj nazor vyvracet nehodlam natoz komentovat. > > > > > Bezne se k invektivam uchyluji nerad, ale tehle se nedalo > > > odolat :-p Nechapu kde vubec beres drzost ptat se na radu a > > > zaroven predem odmitat nejlepsi odpoved jakou ti mnohem > > > zkusenejsi borci mohou dat. > > > > Drzost? Nerekl bych. > > Potrebuju != odmitat lepsi radu. Nikde nepisu ze se nenecham > > premluvit k lepsimu reseni a nechci si nechat poradit. > > > > Prinos tve odpovedi k reseni anebo nedejboze nejake jine reseni ... > > 0%. Mel by ses proste nektere veci naucit prejit s klidem. > > > > > _______________________________________________ > > > Python mailing list > > > Python@py.cz > > > http://www.py.cz/mailman/listinfo/python > > > > _______________________________________________ > > Python mailing list > > Python@py.cz > > http://www.py.cz/mailman/listinfo/python > _______________________________________________ > Python mailing list > Python@py.cz > http://www.py.cz/mailman/listinfo/python > _______________________________________________ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python