[python] Nesrozumitelne prirazovaci prikazy zamichane mezidefinice standalone funkci v modulu

Petr Prikryl PrikrylP na skil.cz
Pondělí Červenec 9 07:44:10 CEST 2007


Petra Javornicka se zeptala
> [...] 
> Radek vysvětluje
> > To se pouziva misto tzv. dekoratoru, ktere jsou zavedene 
> > az od Pythonu 2.4.
> 
> Aha, ja zacala s Pythonem az od verze 2.5.

Lépe řečeno, dekorátory byly zavedeny kvůli tomu, aby
se dodatečná manipulace s funcí/metodou dala předepsat
jako kdyby byla součástí definice funkce/metody a ne
až někde vzadu.

Podrobnosti viz také http://docs.python.org/ref/function.html

> > Funguje to tak, ze dana funkce (tady index) se obali jinou,
> 
> Takze se mohou obe stejne jmenovat? Jak se to jmeno pak 
> resolvuje, kdyz jednou je to regulerni funkce, podruhy 
> takovahle pythomost, kde je stejny jmeno na levy i pravy 
> strane :-O A podle ceho se pozna, ze to neni obycejny 
> konflikt jmen - podle toho, ze je vlevo i vpravo?

Python není kompilovaný jazyk. Funkce (v logickém smyslu)
po zpracování definice existuje v systému jako bezejmenný 
plnohodnotný objekt (v technickém smyslu), který se dá volat
a který je zpřístupněn pojmenovanou referencí. To jméno
se vztahuje k referenci a ne k funkci samotné. Funkce samotná
si jako vnitřní objekt nese všechny vlastnosti s výjimkou
jména ;) ... jako ostatně všechno v Pythonu.

> > Jo, ne ze bych chtel z teto konfery odebirat lidi, ale kdyztak ciste
> > pro Django mame ceskou diskuzni skupinu:
> > http://groups.google.com/group/django-cs
> 
> O odebirani lidi nemusis mit obavy - ja neumim ani Python ani Django.
> 
> Uz jsem se tam prihlasila, i kdyz popravde receno, cim vice o Djangu
> vim, tim min se mi libi a po nedeli budeme rozhodovat, jestli v nem
> zkusime udelat novy projekt a nebo ho smazeme i s Pythonem z pocitacu ;-)

Jestli nemáte chuť do toho se Python aspoň trošku naučit,
smažte ho rovnou. Co se týká vlastností Pythonu, je prostě
jiný, než kompilované jazyky. Umožňuje dělat věci, které se
z principu v kompilovaných jazycích dělají obtížně. Ale za 2 dny
mu na chuť nepřijdete.

pepr



Další informace o konferenci Python