[python] globalni promenne
Petr Mach
gsl na seznam.cz
Úterý Únor 11 23:40:06 CET 2003
Dobry den,
z PHP jsem zvykly mit globalni promenne v jednom
souboru a ten pak includovat do funkci. Takze pak
mam jednoduchou spravu techto promenych. Kdyz
potrebuju dalsi, jednoduse ji pridam do toho souboru
a je pristupna automaticky ve vsech funkcich.
Nemusim pak jak osel do vsech funkci predavat
handler na databazi, informace o uzivateli jako
jeho id nebo ty nejcasteji pouzivane datove
promenne.
V pythonu mi to ale nefunguje, mam soubory
*** glob.py ***
global globVar
globVar="set from glob"
*** fun1.py ***
def fun1():
global globVar
globVar="set from fun1()"
*** main.py ***
from glob import *
from fun1 import *
from fun2 import *
def main():
global globVar
globVar='set from main()'
print globVar
main()
print globVar
fun1()
print globVar
********************
Kdyz spustim ten main.py soubor, dostanu tento
vysledek:
set from glob
set from main()
set from main()
A ja bych si predstavoval a potreboval, aby ten
posledni radek byl set from fun1(). Zkousel jsem
dat ten from global import * i do soubory fun1.py,
ale nicemu to nepomohlo, takze nevim, jak se
mezi funkcemi predavat globalni data.
Jak toho mam dosahnout?
Idealni by bylo, kdybych mohl psat:
def fun1():
from global import *
globVar="set from fun1()"
tedy obdobu toho co se v PHP dela takto:
function fun1(){
include "global.php";
globVar="set from fun1()";
}
Coz mi zpristupni ve funkci vsechny globalni promm.
at uz jsou kdekoliv, ale to Python zrejme nezvlada.
Tak doufam ze aspon zvlada sdileni globalnich promennych
mezi funkcemi z ruznych souboru, protoze psat vsechny
funkce do jednoho megoveho souboru je tezce neprehledny
a predavat je vsechny jako argument funkcce taky neni
zrovna to nejlepsi. Kazdopadne, jestlize v jednom
souboru nadefinuji nejaka staticka data, treba rozsahle
pole nejakych hodnot, tak k nemu potrebuju mit pristup
z ruznych funkci definovanych v ruznych souborech.
Petr Mach
Další informace o konferenci Python