[python] pristup k promennym uvnitr fce

Vlada Macek tuttle na bbs.cvut.cz
Sobota Srpen 7 21:59:25 CEST 2004


[Autor citovane zpravy: gen2n, cas odeslani: 07.08.2004 21:08]

> Myslim, ze by to nejak melo jit:
> Pri ladeni by se mi hodilo, abych si mohl vypsat promenou, která je ve
> scriptu ale uvnitr fce, takze bez global... je normalne neviditelna.
> Nazev promenne se mi jiz (znacne nepohodlne) podarilo vybrat
> (s.func_......co_varnames), ale jeji hodnotu nikoliv. Locals() funguje
> jen pri volani uvnitr fce. Ani pres dir() se mi to nejak nevedlo.
> Pres modul inspect se mi podarilo vypsat celou funkci, ale stale to
> neni ono co hledam.
> Diky
> Pavel


Obavam se, ze toto je principielne pochybny pozadavek. Nevim presne, jak
je to u Pythonu, ale u jazyku nizsi urovne to obvykle byva tak, ze
lokalni promenne mimo svuj kontext neexistuji; proste proto, ze kdyz je
rizeni programu uvnitr funkce, pouziva se k jejich ulozeni zasobnik.

Muj nazor: Chcete-li pristupovat k promenne mimo kontext, je to zrejme
nespravne navrzeny kod a je potreba uvazovat o jeho reorganizaci. Napr.
premisteni promenne z metody do tridy nebo jeji 'zglobalneni' (neprilis
ciste, ale bezne).

Na ladeni se uz dva veky doporucuje jedno, debug prints... Tedy neco
jako (pouze nastrel):

if DEBUG: print self.now(), "jmeno-funkce/moje_lokalni_promenna:",
moje_lokalni_promenna

Vlada

------------- další část ---------------
Netextová příloha byla odstraněna...
Jméno: signature.asc
Typ: application/pgp-signature
Velikost: 252 bytes
Popis: OpenPGP digital signature
Url : http://www.py.cz/pipermail/python/attachments/20040807/013c7776/signature.pgp


Další informace o konferenci Python