[python] omezeni globalniho slovniku

Martin B. spooky.ln na tbs-software.com
Pátek Březen 4 20:13:44 CET 2011


V Fri, 4 Mar 2011 19:42:34 +0100
Hynek Fabian <hynek.fabian na 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.fabian na 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 na py.cz
> > > http://www.py.cz/mailman/listinfo/python
> > 
> > _______________________________________________
> > Python mailing list
> > Python na py.cz
> > http://www.py.cz/mailman/listinfo/python
> _______________________________________________
> Python mailing list
> Python na py.cz
> http://www.py.cz/mailman/listinfo/python
> 



Další informace o konferenci Python