[python] Deferred output

matesfila matesfila na host.sk
Pátek Únor 12 10:44:20 CET 2010


No to ano, nejaké javistické predsudky mám, keď sa to tak dá nazvať. Ono
je to ale predsalen tak trochu iný spôsob uvažovania, v skriptivacom jazyku
oproti kompilovanému. Keď sa k tomu ešte pridá beztypovosť a moja snaha o
funkcionálny štýl programovania, tak je to v podste už úplne totálne iné
programovanie, ako v Jave  :-)

Ale musím povedať, že teraz mi je to už ovela jasnejšie.

Matúš 

On Thu, 11 Feb 2010 15:40:24 +0100, Hynek Fabian
<hynek.fabian na firma.seznam.cz> wrote:
> matesfila (čtvrtek 11 Únor 2010 14:47:31):
>> Funkcia f, ktorá využíva premennú x, môže byť definovaná ešte predtým,
>> ako
> Zapomen na definovani a zjistis ze to tak slozite neni. U podobne 
> komplikovanych konstrukci muze byt obtizne domyslet dusledky, ale
vsechno
> to 
> vyplyva z jednoduchych pravidel. Nejsou zadne deklarace - krome hrube
> kontroly 
> syntaxe se vsechno provadi v jedine sekvenci (proto v pythonu nejsou
zadna 
> makra). Kdyz program dojde ke konstrukci def, class nebo =, strci
vysledek
> do 
> patricneho jmenneho prostoru. To je cele, jediny co je na tom slozity je

> zbavit se memu 'deklarace' a s tim spojene predstavy kompileru ktery
> predem 
> 'zna' strukturu programu. Viz nasledujici primitivni uzavera:
> def foo():
>     def bar():
>         pass
>     return bar
> 
> Ve staticky kompilovanem jazyku je bar() jedina metoda ve vlastnim oboru

> platnosti. V pythonu neni zadna funkce bar() dokud nezavolam foo(), a
pak
> si 
> ji musim predat pomoci return ven ze jmenneho prostoru foo() pokud ji
chci 
> videt i jinde.
> A naopak, kdyz foo() zavolam dvakrat tak interpret dvakrat narazi na 
> konstrukci "def bar():…" a vytvori dve ruzne (!) funkce
> a = foo()
> b = foo()
> a is b	# False
> 
> 
>> Pre aké jazyky je vlastné takéto chovanie typické? Súvisí to s
>> beztypovosťou jazyka, alebo s tým, že je jazyk skriptovací, alebo s čím
>> vlastne?
> afaik se tomu rika pozdni vazba (late binding) a je to celkem bezna
> vlastnost 
> skriptovacich jazyku (krome Javy ktera si hraje na kompilaci)
> U kompilovanych jazyku se to moc nevyskytuje, protoze kdyz kompiler nevi
> typ 
> toho co kompiluje, tak toho moc nenakompiluje :-) ale neni to podminka -
> treba 
> virtualni metody v C++ jsou castecne pozdni vazba (za cenu toho ze
nejsou
> tak 
> uplne staticky kompilovane).
> 
> uff to jsem se rozpesul, holt javisticky predsudky je potreba potirat
:-)
> _______________________________________________
> Python mailing list
> Python na py.cz
> http://www.py.cz/mailman/listinfo/python


Další informace o konferenci Python