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?
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.
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.
Zapomel jsem na neco?
Martin B. (Friday 04 of March 2011 12:48:56):
> V Fri, 4 Mar 2011 12:00:58 +0100
>
> Hynek Fabian <[email protected]> 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
> > [email protected]
> > http://www.py.cz/mailman/listinfo/python
>
> _______________________________________________
> Python mailing list
> [email protected]
> http://www.py.cz/mailman/listinfo/python
_______________________________________________
Python mailing list
[email protected]
http://www.py.cz/mailman/listinfo/python