[python] Nesrozumitelne prirazovaci prikazy zamichane mezi definice standalone funkci v modulu

Karel Šrot karel.do.pekla.zajel na seznam.cz
Pondělí Červenec 9 08:17:09 CEST 2007


Zdravim,

> Ne o moc, protoze to neco_udelam_s_funkci je taky funkce, ne?

Ano.

> Jak se z toho pak pozna, ze chci do promenne index strcit adresu funkce
> neco_udelam_s_funkci a ne ji zavolat a strcit tam jeji navratovou hodnotu,
> kdyz ji predavam argument index :-O

> 
> Analogicky ke Tvym prikladum bych cekavala, ze se adresa priradi v pripade:
>    index  = neco_udelam_s_funkci
> coz by odpovidalo Tvemu prirazeni b=a. Ale kdyz napisu, ze
>    neco_udelam_s_funkci(index)
> tak to vypada spis jako jeji volani, tedy a(1)
> 

a to prave neni pravda. Pokusim se to vysvetlit jinak, ackoliv 
dekoratory nepouzivam, ale snad to nebudu psat zbytecne. Pomozme si 
analogii a matematiky. Pak to neco_udelam_s_funkci je vlastne operator 
(funkce pracujici s funkcemi).

Treba necht je neco_udelam_s_funkci diferencialni operator D, ktery 
funkci derivuje. Potom
g = D(f)
definuji funkci g, ktera je derivaci funkce f (presne totez mame v 
diskutovanem prikazu). Naopak aby se jednalo o hodnotu (funkci hodnotu), 
pak tuto hodnotu musime urcovat v nejakem konkretnim bode.

d = D(f)(1)  urcime hodnotu derivace funkce f v bode 1, coz je totez jako
d = g(1)

Tedy abych to nejak zakoncil, aby to bylo Vami zminovane volani funkce, 
musel by tam byt argument funkce index. Ci jeste jinak, ono se o volani 
funkce jedna, ale pouze volani funkce neco_udelam_s_funkci, ktera zde 
figuruje jako operator a tedy transformuje jednu funkci (zde index) na 
druhou. To, ze je na leve strane take index je pouze analogie prikazu
a = a + 1

Tak ted nevim, jak moc jasnejsi to je.. :-) Snad jo.
Karel


Další informace o konferenci Python