[python] globalni promenne

Michal Molhanec molhanec na seznam.cz
Středa Únor 12 11:10:14 CET 2003


On Wed, 12 Feb 2003 08:04:34 +0100 Petr Mach <gsl na seznam.cz> wrote:


> 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 

tak to mate tezky (i kdyz IMHO Perl ma vetsinu tech vlastnosti)

> 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.

no vidite, ja si myslim pravy opak :-) je to vec, kterou si me Python
naprosto ziskal, po ktere jsem radu let touzil

> 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.

ale v okamziku, kdy napisete func2=nejakajinafce tak se to taky nezmeni
globalne 

zkuste nasledujici kod:

***************** glob.py
def f():
    print "g"

globVar=["set from glob"]

***************** fun1.py
from g import *

def ff():
    print "f"

def fun1():
   global globVar
   global f
   globVar[0]="set from fun1()"
   f = ff

****************** main.py
from g import *
from fun1 import *

def fm():
    print "m"

def main():
   global globVar
   global f
   globVar[0]='set from main()'
   f=fm

print globVar
f()
main()
print globVar
f()
fun1()
print globVar
f()






Další informace o konferenci Python