[python] globalni promenne
Zdenek Pavlas
zdenek.pavlas na nextra.cz
Pátek Srpen 22 11:05:28 CEST 2003
Jan Svec wrote:
> Pokud se nemylim, tak lze provest 'import __main__'...
Aha, to jsem nevedel.. Zkusil jsem a funguje to.. super.
> Muj nazor na tento thread zni takto: globalni promenne jsou
> prezitek. Pokud touzite po jakemsi zapouzdreni, pouzijte
> OOP!
Silne nesouhlasim. Velmi casto potrebujete "globalni kontext",
ktery uchovava takove veci jako DB connection, ruzne konfiguracni
parametry, logovaci subsystem a jeho parametry, atd..
Posilat tento kontext jako dalsi atribut do kazde funkce
je zbytecny overhead, stejne tak cpat jej do kazdeho objektu
jako instance attribut.
Me se treba osvedcilo v kazde aplikaci dat do __builtins__
vlastni funkci 'log ()' pro logovani, a dictionary 'conf'
kde je rozparsovan config file.
Proste pokud mate singleton objekt ke kteremu pristupujete
"vlastne porad", je rozumne mit jej globalni.
> Ale protoze Python je jazyk objektovy (nikdo mi to
> nevymluvi), tak zde existuji objekty, na ktere vytvarim
> odkazy. A pokud si v lokalnim prostoru (nebo jakemkoli jinem)
> vytvorim odkaz, pak odkazuje na objekt, cili pokud v
V tomhle je v pythonu docela bordel. "Odkaz" muzete vzit
i na dictionary nebo list ktere ale nejsou objekty (nejde
je subclassovat), a to prestoze maji metody.
> nepromitne! Kolikrate jsem premyslel (k implementaci jsem se
> nedostal) nad tim vytvorit objekt "odkaz", ktery by pracoval
> jako proxy a ktery by si pamatoval jmeno promenne na kterou
> ukazuje a tu by take modifikoval. Zatim jsem ho nakonec
> nikdy nepotreboval.
Tohle uz myslim v pythonu je, viz "bastion" a podobne.
Funguje to ale pouze nad pythonovskym objektem.
> Je vsak treba pripomenout, ze globalni promenne a jejich
> pouzivani svedci o spatnem navrhu a ze "Neco shnileho je ve
> state Danskem." Stejne tak by dobre navrzeny program mel jit
> rozdelit do modulu v libovolne fazi vyvoje. Pokud tak tomu
> neni, dozajista jste porusil jedno z pravidel programovani:
> Think first, program latter.
Bullshit. Nepisete nahodou v Hungarian notation? :) Debata je
o nicem protoze lokalni promenne neexistuji. Je jedno globalni
pole a to se (ruznym zpusobem) indexuje.
> A jeste jedno, nedokazu si predstavit vase starosti, pokud
> byste se rozhodl zmenit architekturu programu (napr.
> pouzivani vlaken apod). Nechci vam do niceho zasahovat, ale
> Python si urcite zaslouzi programovat v nem objektove.
OOP je ok- pro veci na ktere se hodi.
--
Zdenek Pavlas
Application Developer
NEXTRA Czech Republic s.r.o. http://www.nextra.cz
_______________________________________________
python mailing list
python na py.cz
http://py.cz/mailman/listinfo/python
Další informace o konferenci Python