[python] globalni promenne

Petr Mach gsl na seznam.cz
Pátek Srpen 22 11:05:27 CEST 2003


Michal Molhanec wrote:
> On Wed, 12 Feb 2003 01:05:07 +0100 Petr Mach <gsl na seznam.cz> wrote:
> 
> 
>>No, ja bych to prave nerad zapouzdroval. Tenhle muj problem
>>vznikl tak, ze uz mi soubor s funkcemi prerostl pres hlavu
>>a chtel jsem jej rozdelit na vic casti, ale zda se, ze Python
>>je nepruzny a neni to u nej mozne, bez uprav veskereho kodu.
>>Navic nektere prom uz maji treba takovouhle anotaci:
>>   vysledky['anketa'][aAnketa]['odpoved'][aOdpoved][i]
>>A nechci to jeste prodluzovat, kdyz se maji dve takove promm.
>>porovnavat, uz se to nevejde ani na obrazovku a Python navic
>>ma neprehledne formatovani kodu, kdyz bloky urcuje odsazovanim,
>>misto aby to delal treba slozenyma zavorkama.
>>
> 
> 
> muzu se zeptat, proc jste si vybral zrovna Python? Na tomhle je v podstate
> zalozen a pokud se mi to nelibi tak je lepsi pouzit jazyk ktery se mi libi
> vic
Protoze se mi libi jeho osatani vlastnosti. Je multiplatformni, dobre
podporovany (jsou pro nej knihovny ktere potrebuji), moduly se 
kompiluji, z programu se da udelat vcelku mala samospustitelna
aplikace, takze program se da snadno sirit - nevyzaduje instalaci
jazyku a potrebnych pouzitych knihoven a podobne, pritom se pro
nej jako interprtovany jazyk snadno pise. Zadny jiny jazyk 
odpovidajicich vlastnosti neznam. Kazdy ma neco a Python je vyhovujici 
mix, ale to odsazovani povazuji za nestastny experiment a nebo
snahu za kazdou cenu se necim odlisit. Imho je s tim vic starosti nez 
radosti.

> obecne si myslim, ze vas programatorsky styl neni pro Python uplne idealni
> a jazyku existuje spousta, tak proc zrovna ten, ktery se mi nelibi ?
> 
> 
>>>prazdny modul ma vlastne funkci C++ namespace. V Pythonu global, pokud
>>
>>se
>>
>>>nemylim znamena "tato promenna neni lokalni automaticka promenna tohoto
>>>bloku ale globalni promenna tohoto modulu" takze co modul to vlastni
>>>globalni promenne.
>>>
>>
>>To jsem pochopil, ale take jsem pochopil, ze konstrukci
>>   from modul import *
>>vlozim namespace modulu do skriptu, u funkci to tak
>>alespon funguje, u promm. z nejakeho duvodu ne.
> 
> 
> IMHO se to chova jak pro fce tak pro promenne stejne, pouze funkce malokdy
> prirazujete takze se to neprojevi
> 
> jinak to chovani naprosto odpovida dokumentaci:
> "The from form does not bind the module name: it goes through the list of
> identifiers, looks each one of them up in the module found in step (1), and
> binds the name in the local namespace to the object thus found."
> 
Kdyz udelam dalsi modul s func2(), tak tuto funkci mohu ve func1() 
pouzivat, maji stejny namespace, ale globalni promenou ne, proto
myslim ze se to stejne nechova.


------------- další část ---------------
_______________________________________________
python mailing list
python na py.cz
http://py.cz/mailman/listinfo/python


Další informace o konferenci Python