Petra Javornicka napsal(a):
> On 7/9/07, Karel Šrot <[EMAIL PROTECTED]> 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
> [email protected]
> 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
_______________________________________________
Python mailing list
[email protected]
http://www.py.cz/mailman/listinfo/python