[python] Nesrozumitelne prirazovaci prikazy zamichane mezi definice standalone funkci v modulu
regnarG
regnarg na seznam.cz
Pondělí Červenec 9 09:01:54 CEST 2007
Petra Javornicka napsal(a):
> On 7/9/07, Karel Šrot <karel.do.pekla.zajel na seznam.cz> wrote:
>
>
>> 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
>>
> [...]
>
>> d = D(f)(1) urcime hodnotu derivace funkce f v bode 1, coz je totez jako
>> d = g(1)
>>
>
> To je jasny, ale porad nevim, odkud bere interpretr informaci, aby mohl odlisit
> g=D # pointer
> d=D(f) # taky pointer :-O
> d=D(n) # dereference - call
>
> U syntaxe dekoratoru s prefixem '@' se to zda byt jasny. Ale u funkce
> utrousene nekde mezi definicemi?
> _______________________________________________
> Python mailing list
> Python na py.cz
> http://www.py.cz/mailman/listinfo/python
>
>
d=D(f) a d=D(n) je přece pořád to samé (až na název proměnné :D).
Pokaždé když je použita syntaxe funkce(parametry), jedná se o volání.
Funkce zrovnatak jako parametry může být i výrazem, takže lze např.
polefunkci[0](). Ale návratovou hodnotou tohoto volání může být taky
funkce, kterou lze poté dál využít. Dekorátor je v podstatě funkce,
která příjmá funkci jako parametr a vrací funkci. A s touto vrácenou
funkcí lze potom dále pracovat, nebo ji zavolat.
takže
f2=f uloží do f2 odkaz na funkci f
h=f(2) uloží do h návratovou hodnotu volání funkce f pro dva
g=D(f) uloží do g odkaz na novou funkci obalující f
a=g(1) tuto funkci zavolá
b=D(f)(1) oba předchozí příkazy najednou -- D(f) vrací funkci, která je
v tom samém výrazu volána s paprametrem 1
--
regnarG
http://regnarg.kx.cz
Další informace o konferenci Python