[python] globalni promenne
Petr Mach
gsl na seznam.cz
Středa Únor 12 08:04:34 CET 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ší informace o konferenci Python