[python] globalni a lokalni promenne

Jan Svec honza na py.cz
Úterý Prosinec 10 10:58:35 CET 2002


On Mon, 9 Dec 2002, Petr Vanek wrote:

> zdravej,
> dobre se maj, jenom porad nevedej, jak tu udelaj, kdyz maj takovejhle
> problem evidentne s lokalnima a globalnima promennyma:

Na to si davaj pozor. Lokalni a globalni promenne jsou
hajzli a kazdy by mel umet, kdyz ukazeme na jmeno promenny,
rict, jestli je lokalni nebo globalni! Proto take
nedoporucujou pouzivat 'from module import *', protoze to
naimportuje spoustu veci a pak uz mi nereknou, ktera
promenna je kde definovana :)

> def connect(self,db,dir):
> 	import gadfly
> 	conn=gadfly.gadfly()
> 	conn.startup=(db,dir)
> 	return conn

Pokud maj bordel ve jmenech, zkusi tohle:

def connect(self,db,dir):
	global gadfly, conn
	import gadfly
	conn=gadfly.gadfly()
	conn.startup=(db,dir)
	return conn

Po volani teto funkce maj globalnim v namespace dve novy
promenny - gadfly (modul) a conn (konekce).

> co musim udelat, abych mohl v cele aplikaci pouzivat tuhle connekci? ted
> mi to vraci asi (logicky): raise error, "not bound to database"

To ale vypada, ze nejsou pripojeny k databazi! Nemaj problem
na jejich strane?

> ja v tech lokalnich a globalnich promennych mam takovy chaos, vzdycky
> to nejak zmastim, ale nejak to preci musi byt korektne, ne?
>

Pozor na lok./glob. promenny, prosime jich vseci!

PS: Maj v Kanade hodne snehu? V Cechach snih nemame, jen
strasnej mraz, rano nam malem upadli usi. Asi vytahneme
kulicha.

--
S pozdravem
Jan Svec

<honza na py.cz>
http://py.cz




Další informace o konferenci Python